gpt4 book ai didi

java - 按位与在 Java 哈希表哈希查找中?

转载 作者:行者123 更新时间:2023-12-04 11:26:10 26 4
gpt4 key购买 nike

我注意到 hash function code作为 java.util.Hashtable#get(K key) 的一部分执行以下操作:int index = (hash & 0x7FFFFFFF) % tab.length;。这个二进制“与”运算是否仅用于重置符号位?从而避免负面的表访问。

更新:他们用 0x7FFFFFFF 而不是 0xEFFFFFFF 进行“和”这一事实让我感到困惑。为什么符号需要一个完整的字节而不是单个位?

最佳答案

是的,没错。这是为了避免对哈希表中的基础数组进行负索引。

请注意,在 C 或 C++ 等具有无符号整数类型的语言中,只需在哈希函数中使用无符号值即可避免这种情况。

编辑:鉴于您关于为什么 0x7FFFFFF0xEFFFFFF 的新问题 - 这些数字中的第一个全为 1,最高位设置为0.其中第二个没有这个属性;结果是 1110,后面跟着很多 1。因此,用第一个屏蔽会清除 1 位,而用第二个屏蔽可能不会这样做。

希望这对您有所帮助!

关于java - 按位与在 Java 哈希表哈希查找中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14428347/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com