gpt4 book ai didi

java - 如何快速找到较长的单个位集的位置

转载 作者:行者123 更新时间:2023-12-02 02:50:24 27 4
gpt4 key购买 nike

我有一个长整型,有一个位设置,我需要知道它是什么,例如索引。我需要尽快计算出来。天真的想法是除以 2 并检查结果是否为 1。但这最多需要 63 次迭代(最坏情况)。

我的下一个想法是进行二分搜索,例如看看它是位 63-32 还是 31-0,然后是 63 - 48、47 - 31、31 - 16、15 - 0 等等,有很多 if-else 语句,但这给了我一堆代码。 ..

此外,我想尽量减少对象创建和内存使用。您可能会认为我对 Java 的看法是错误的,也许应该使用 C/C++。好吧,这是为了学校比赛,我别无选择:)

我想查看一些示例代码!

最佳答案

使用Long.numberOfTrailingZeros - 这正是您正在寻找的索引。

Long.numberOfLeadingZeros如果您从最高位开始计数,也很有用。

这两种方法都是 JVM 内在函数,即它们被 JIT 编译器特殊对待。这些方法被翻译为特殊的CPU指令(TZCNT/LZCNT),因此非常高效。

关于java - 如何快速找到较长的单个位集的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43943375/

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