当前位置: 首页 > 面试题库 >

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

蒲曦
2023-03-14
问题内容

我使用64位整数内的位存储标志。
我想知道是否有单个位设置了64位整数中的任何位置(我不在乎任何特定位的位置)。

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

我可以使用 Bit Twiddling Hacks (由Sean Eron Anderson
撰写)

来计数位数,但是我想知道什么是最有效的方法来检测是否设置了一位。

以及一些维基百科页面:

  • 找到第一个
  • 位操作
  • 汉明重量

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


问题答案:

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

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

这也将0乘以2的幂,因此如果重要,则应检查数字是否不为0。因此:

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


 类似资料:
  • 如何检查字节中的某个位是否被设置?

  • 给定一个非常简单的类: 要检查是否尚未赋值,只需执行是?

  • 我需要得到一个32位数字中的1位数字,其中只有一个1位(总是)。在C++或ASM中最快的方法。 例如

  • 这是下面的链接,我如何使用触摸点移动子弹到目标位置。( 我的问题是,如果弹体已经到达目标位置,我如何阻止弹体。 我已经尝试了下面的代码,它工作正常。 但我想让子弹停在目标位置,也不停在最远距离。但我不知道怎么做。

  • 问题内容: 在Python中,有没有一种简单的方法来检查可选参数的值是否来自其默认值,或者是因为用户已在函数调用中显式设置了它? 问题答案: 很多答案都没有完整信息的一部分,因此我想将所有信息与我最喜欢的模式结合在一起。 默认值是一种类型 如果默认值是可变对象,那么您很幸运:您可以利用以下事实:在定义函数时,Python的默认参数将被评估一次(上一节答案末尾的更多信息) 这意味着您可以轻松地使用来

  • 问题内容: 如何检查是否设置了项目?目前我正在使用 问题答案: 如果该项不存在,则WebStorage规范中的方法显式返回: …如果给定键在与对象关联的列表中不存在,则此方法必须返回null。… 所以你可以: