解读JAVA中的位运算操作

  目录

  1、名词解释

  首先,位移运算仅针对整数,非整数不支持位移运算。

  如果对byte、short类型移位,在移位运算前,它们会先被转成int类型,且返回值也是int类型。

  如果对long类型移位,则返回值也是long。

  2、正负数换算

  在java中最高位表示符号位,最高位0代表正数,最高位1代表负数。

  用byte数据类型举例,byte占据8个二进制位:

  01111111 正数(127)

  11111111 负数(-1)

  负数的换算方法

  已知最高位为1,符号位不变,将其它位取反,然后+1即可得出对应负数。

  以byte类型为例:

  11111111 先取反-> 10000000 再加1-> 10000001 得出结果-> -1

  10001111 先取反-> 11110000 再加1-> 11110001 得出结果-> -113

  10101010 先取反-> 11010101 再加1-> 11010110 得出结果-> -86

  10000001 先取反-> 11111110 再加1-> 11111111 得出结果-> -127

  已知十进制负数,如何算出二进制原码

  符号位不变,将剩下二进制位-1,然后取反即可得出原二进制码。

  以byte类型为例:

  -1 二进制-> 10000001 再减1-> 10000000 再取反得出结果-> 11111111

  -113 二进制-> 11110001 再减1-> 11110000 再取反得出结果-> 10001111

  -86 二进制-> 11010110 再减1-> 11010101 再取反得出结果-> 10101010

  -127 二进制-> 11111111 再减1-> 11111110 再取反得出结果-> 10000001

  3、位移运算演示

  因为1字节的byte进行位运算时,会被自动转成4字节的int再进行运算,我们这里直接使用int类型进行演示,方便解读。

  4、拓展

  ~:二进制取反运算。

  &:二进制与运算

  |:二进制或运算

  总结

  以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

  您可能感兴趣的文章: