编程语言
首页 > 编程语言> > Java中的 >>和 >>>

Java中的 >>和 >>>

作者:互联网

简单说 >> 是有符号右移, >>> 是无符号右移。

计算机中存储的都是补码,所以对于正说来说,这两个操作没差。

但是对于负数来说:
  有符号右移 >> 会给负数补码高位补1,无符号右移 >>> 给负数补码高位补0。

举例:
  -2的补码:1111 1111 1111 1111 1111 1111 1111 1110
  无符号右移1位结果:0111 1111 1111 1111 1111 1111 1111 1111,转为10进制为2147483647,即Integer.MAX_VALUE
  -1的无符号右移结果和-2一样,道理也是一样的。

标签:右移,Java,符号,高位,补码,负数,1111
来源: https://blog.csdn.net/IronWring_Fly/article/details/100652781