0
为什么Java中的表达式(-1 >>> 32)
按预期评估为-1
而不是0
?该>>>
-Shift运营商应填写前述0,所以结果应该具有的所有位设置为0。(-1 >>> 32)== -1?
这是奇怪的,因为它打破了>>>
语义:例如(-1 >>> x)
的前x位对所有0 <= x <= 31
设置为0。唯一的(意外的)例外是32.
这是故意的行为,错误还是(过度动机的)编译器优化?
我使用表达式~(-1 >>> x)
来扩展一个cidr-netmask到它的32位等价物,但是看起来,必须单独处理/ 32-掩码。
thx为您的答复和抱歉发布重复的问题。这解释得很好。 – paranoid