~取反操做符移动
1
由于1的原码,反码,补码都为,0000 0000 0000 0000 0000 0000 0000 0001。因此取反后为
1111 1111 1111 1111 1111 1111 1111 1110(补码),要转换成反码,1111 1111 1111 1111 1111 1111 1111 1101把反码转换成原码1000 0000 0000 0000 0000 0000 0000 0010,因此~1=-2
-1
由于-1的原码为:1000 0000 0000 0000 0000 0000 0000 0001 反码为:1111 1111 1111 1111 1111 1111 1111 1110 补码为:1111 1111 1111 1111 1111 1111 1111 1111 取反以后0000 0000 0000 0000 0000 0000 0000 0000 因此-1取反以后等于0
| 按位或操做(两个里面有一个是1就是1)
&按位与操做(两个都是1才为1)
^异或操做(两个不同就是1)
2>>1按位右移(符号位不变,空出位用符号位补齐)
0000 0000 0000 0000 0000 0000 0000 0010向右移动1位后0000 0000 0000 0000 0000 0000 0000 0001
1<<2按位左移(符号位不变,低位用0补齐)
0000 0000 0000 0000 0000 0000 0000 0001 向左移动两位后 0000 0000 0000 0000 0000 0000 0000 0100