Java的位运算
Java提供的位运算符有:
1、左移( << )
规则:符号位不变,高位溢出截断,低位补零。比如 -1 << 2 = -4
2、右移( >> )
规则:符号位不变,低位溢出截断,高位用符号位填充。如:8 >> 2 = 2。
3、无符号右移( >>> )
规则:高位填充0,低位溢出。如-1>>>1=2147483647
4、按位与( & )
两位都为1,那么结果为1
10 00001010
& 8 00001000
----------------------------
00001000
5、按位或( | )
一个是1,结果为1,否则为0
10 00001010
| 8 00001000
----------------------------
00001010
6、按位异( ^ )
两个相反,结果为1,否则为0
10 00001010
^ 8 00001000
----------------------------
00000010
7、非( ~ ) 一元操作符
取相反
2 00000000 00000000 00000000 00000010
~2 11111111 11111111 11111111 11111101
位运算规则:
Java数值运算过程中都是先将十进制转换为二进制然后再进行运算,在计算机的运算的时候,都是将原码转成补码进行运算的,再把二进制数据转换为十进制展现给用户。
二进制运算规则如下:
对于有符号的而言,
最高位为符号位,0表示正数,1表示负数
正数的原码,反码和补码都一样,三码合一
负数的反码:符号位保持不限,其他位取反
负数的补码:负数反码 + 1
0的反码和补码都是0