【发布时间】:2021-10-21 11:52:31
【问题描述】:
我试图将一个整数右移 32,但结果是相同的数字。
(例如5 >> 32 是 5。)
如果我尝试对 Byte 和 Short 执行相同的操作,它会起作用。例如,“(byte)5 >> 8”为 0。
整数有什么问题?
【问题讨论】:
-
Byte 是 8 位,short 是 16 位,但它们为什么起作用?
-
@TheLostMind 虽然从 JLS 的角度来看确实如此,但转移与您的评论似乎暗示的轮换不同。
-
@MarkRotteveel 完全同意。 java 包装它的移位量是该语言中一个令人讨厌的错误。 IE。移动 8 位的行为就像移动 32 位,但是移动 64 位突然不同了……他们在抽烟吗?
标签: java bit-manipulation