Java中位运算符都是通过二进制进行操作的。
位运算规则:
1、java使用补码来表示二进制数,在补码表示中,最高位为符号位,正数符号位为0,负数为1。
例:
+42 的补码为:00101010
-42 的补码为:11010110(11010101+0000001)
负数取补码的规则
1、取该数绝对值的补码
2、对该补码按位取反
3、然后对整个数加1
2、不同类型的进行位运算,低精度类型的数据要先转成高精度的,缺的左位按位填满,正数则填0,负数则填1
例:byte a = 1;=>0000,0001
int b = 10;=>0000,0000,0000,0000,0000,0000,0000,1010
a =1; =>0000,0000,0000,0000,0000,0000,0000,0001
a&b =0000; =>0000,0000,0000,0000,0000,0000,0000,0000
3、移位运算
<<:将一个数的各二进制位全部左移若干位,右边补0;
>>:将一个数的各二进制位全部右移若干位,最高位则移入原来最高位的值(正数补0,负数补1)。
>>>:将一个数的各二进制位全部右移若干位,最高位补0;