定义:
右移动>>:带符号右移。正向右移高位补0,负向右移高位补1。
左移动<<:带符号左移。正数左移低位补0,负数左移低位补1。
无符号右移>>>:高位通补0,无论是正数还是负数。
栗子:以下是32个代表
2的二进制:0000 0000 0000 0000 0000 0000 0000 0010
-2的二进制:1111 1111 1111 1111 1111 1111 1111 1110
获得2的负数二进制表示:2的二进制补码加1
1111 1111 1111 1111 1111 1111 1111 1101
加1
1111 1111 1111 1111 1111 1111 1111 1110
<1、2>>>1
0000 0000 0000 0000 0000 0000 0000 0010
高位补0 :0000 0000 0000 0000 0000 0000 0000 0001
<2、2>>1
0000 0000 0000 0000 0000 0000 0000 0010
2)高位补0 :0000 0000 0000 0000 0000 0000 0000 0001
<3、-2>>1
1) 去掉红色数字 :1111 1111 1111 1111 1111 1111 1111 1110
2)高位补1 :1111 1111 1111 1111 1111 1111 1111 1111
<4、2<<1
1 )去掉红色数字 :0000 0000 0000 0000 0000 0000 0000 0010
2 ) 低位补0 :0000 0000 0000 0000 0000 0000 0000 0100
<5、-2<<1
1 )去掉红色数字 :1111 1111 1111 1111 1111 1111 1111 1110
2 ) 低位补1 : 1111 1111 1111 1111 1111 1111 1111 1101
<6、-2>>>1
1 )去掉红色数字 :1111 1111 1111 1111 1111 1111 1111 1110
2 ) 高位补0 :0111 1111 1111 1111 1111 1111 1111 1111
总结:
2>>>1 相当于2乘以2^1 同理2>>>2^n相当于乘以2^n 无符号位操作均补0
2>>1 相当于2乘以2^1 同理2>>>2^n相当于乘以2^n正数高位补0,负数高位不是1
2<<1 相当于2乘以2^1 同理2>>>2^n相当于乘以2^n 正数左移低位补0,负数左移低位补1。