解读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、拓展
~:二进制取反运算。
&:二进制与运算
|:二进制或运算
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
您可能感兴趣的文章: