异或运算可以理解为,两个数相同为0,不同为1。
负数以正数的补码表示
二进制中负数的计算
原码:一个整数按照绝对值的大小转化成二进制的数
反码:将二进制数按位取反
补码:反码加 1
求负数的二进制数
以-14 举例
原码:14 即 00000000 00000000 00000000 00001110
反码: 11111111 11111111 11111111 11110001
补码: 11111111 11111111 11111111 11110010
所以-14 的二进制是 11111111 11111111 11111111 11110010
已知二进制负数求原十进制数
(注意:java中 整数位 32位)
如二进制是 11111111 11111111 11111111 11110010
得到反码减1 11111111 11111111 11111111 11110001
原码: 00000000 00000000 00000000 00001110
即 1110 = 14 所以取反 就是-14
<<左移运算符
1.将一个运算对象的各二进制位全部左移若干位(左边的二进制丢弃,右边补0)
11 << 2 = 44
-14 <<2 =-56
-14的二进制(11111111 11111111 11111111 11110010)左移2位 为
11111111 11111111 11111111 11001000 结果为(-56)
【补充】:对于左移,直观的理解为,对于正数来说,左移相当于乘以2(但效率比乘法高);对于负数来说,没有直观的理解。
>>右移运算
将一个运算对象的各二进制位全部右移若干位,正数左补0,负数左补1.
4 >> 2 = 1;
-14 >> 2 = -4;
【补充】:对于右移,直观的理解为,对于正数来说,右1移相当于除以2(但效率比除法高);对于负数来说,没有直观的理解。