0
点赞
收藏
分享

微信扫一扫

Java中>>、>>>、<<


定义:

右移动>>:带符号右移。正数右移高位补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。

 

 

 

举报

相关推荐

java中&&,&,|,||

java中this

【Java】Java中的多态

java中e

java中延时

Java中Collections

java中dev

0 条评论