1. << 左移
39 << 2
0010 0111向左移动2位,右边空出来的位置用0补满,变为
1001 1100(156)相当于乘以了2x2=4倍
2. >> 带符号右移
(1)正数
39>>2
0010 0111,向右移动2位,将低位的2个数字移出,左边空出来的地方,正数就补0.负数补1,变为
0000 1001(9),相当于除以2x2=4倍(取整)
(2)负数
-39>>2
-39原码:1010 0111
-39的补码:保证符号位不变,其余位置取反加1
1101 1000
1101 1001
右移2位,高位补1
1111 0110
补码形式的移位完成后,结果不是移位后的结果,要根据补码写出原码才是我们所求的结果。其方法如下:
保留符号位,然后按位取反,然后加1,记得所求数的原码:
1000 1001
1000 1010
结果为 -10