gpt4 book ai didi

java - 检查整数中是否只设置了一个位(无论其位置如何)

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:58:47 26 4
gpt4 key购买 nike

我使用 64 位整数中的位存储标志。
我想知道在 64 位整数中的任何位置是否设置了一个位(即我不关心任何特定位的位置)。

boolean isOneSingleBitSet (long integer64)
{
return ....;
}

我可以使用 Bit Twiddling Hacks (by Sean Eron Anderson) 计算位数,但我想知道仅检测是否设置了一位的最有效方法是什么...

我发现了一些其他的相关问题:

还有一些维基百科页面:

注意:我的应用程序是用 java 编写的,但我对使用其他语言进行优化感到好奇...


编辑:Lưu Vĩnh Phúc指出我的问题中的第一个链接已经得到了答案:参见 Determining if an integer is a power of 2 部分在 Bit Twiddling Hacks(作者 Sean Eron Anderson)中。我没有意识到一位二的幂是一样的。

最佳答案

如果您只是字面上想检查是否设置了一个位,那么您实际上是在检查该数字是否为 2 的幂。为此,您可以执行以下操作:

if ((number & (number-1)) == 0) ...

这也会将 0 算作 2 的幂,因此如果这很重要,您应该检查该数字是否为 0。那么:

if (number != 0 && (number & (number-1)) == 0) ...

关于java - 检查整数中是否只设置了一个位(无论其位置如何),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13420241/

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