gpt4 book ai didi

java - 为什么变量索引与 0x1f 进行两次 AND 运算?

转载 作者:行者123 更新时间:2023-11-30 08:01:33 25 4
gpt4 key购买 nike

我正在阅读 Scala 中不可变集合的底层数据结构(HashMapVector,更准确地说),在阅读代码时,我遇到了 get0 函数在 HashTrieMap 中。

为什么变量 index 在第 312 行再次与 0x1f 进行与运算?在我看来,结果是一样的(即第二个 AND 不是必需的)。我错过了什么?

这是上述函数:

override def get0(key: A, hash: Int, level: Int): Option[B] = {
val index = (hash >>> level) & 0x1f // index is AND-ed with 0x1f
val mask = (1 << index)
if (bitmap == - 1) {
elems(index & 0x1f).get0(key, hash, level + 5) // once again, AND-ed with 0x1f
} else if ((bitmap & mask) != 0) {
val offset = Integer.bitCount(bitmap & (mask-1))
elems(offset).get0(key, hash, level + 5)
} else
None
}

最佳答案

你没有遗漏任何东西。事实上,第二个 AND 不是必需的。

关于java - 为什么变量索引与 0x1f 进行两次 AND 运算?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37476099/

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