【发布时间】:2013-10-28 08:06:39
【问题描述】:
我有两个相关的问题:
按位运算符 >>> 意味着我们将二进制数移动了这么多位,同时在最高有效位中填充 0。但是,为什么下面的操作会产生相同的数字:5>>>32 产生 5 而 -5>>>32 产生 -5。因为如果上面的描述是正确的,那么这两个操作都会产生 0 作为最终结果。
继续上面的内容,根据 Effective Java 书,我们应该在计算哈希码时使用 (int) (f ^ (f >>> 32))(如果字段很长)(如果字段很长)。我们为什么要这样做,解释是什么
【问题讨论】:
标签: java hashcode bitwise-operators gethashcode effective-java