Java右移整数乘以32

Ric*_*rez 4 java bit-manipulation

我试图将整数右移32,但结果是相同的数字.(例如5 >> 32是5.)

如果我尝试在Byte和Short上执行相同的操作,它就可以工作.例如,"(byte)5 >> 8"为0.

整数有什么问题?

Old*_*eon 9

JLS 15.19.移位运算符

...如果左侧操作数的提升类型为int,则只使用右侧操作数的五个最低位作为移位距离.

所以转移32是无效的.

  • 这才是真正的答案.OP的代码就是这样(基本上),因为Java语言规范说它必须**. (2认同)