目录
1.按位与操作&
两个操作数,同为1则为1,否则为0
10 00001010(补码) & 12 00001100(补码) ------------------ 8 00001000
-10 11110110(补码) & 8 00001000(补码) ------------------ 0 00000000
2.按位或操作 |
两个操作数,同为0则为0,否则为1
10 00001010(补码) | 12 00001100(补码) ------------------ 14 00001110
-10 11110110(补码) | -12 11110100(补码) ------------------ 11110110(补码)---------10001010(源码)------ -10
3.按位取反操作
所有操作数取反
4.按位异或操作 ^
两个操作数,相同为0,不同为1
移位运算
1.左移(
右边空出来的位用0填补高位左移溢出则舍弃该高位
左移几位其实就是这个数 *2 的几次幂
-8 11111000(补码) ----------------------- -8<<2 11100000(补码) 11011111(反码) 10100000(源码)---------- -32
2.有符号右移(>>)
左边空出来的位用0或1填补,正数用0负数用1填补
右移几位其实就是这个数/2的几次幂----->除法
-8 11111000(补码) ----------------------- -8>>2 11111110(补码) 11111101(源码) 10000010(源码)---------- -2
3.无符号右移(>>>)
数据进行右移时,高位出现的空位,无论原高位是什么,空位都用0补
注意:整型默认是使用int,所以计算无符号右移时,是按照32位二进制数进行计算的