algorithm - 使用左移检查一行中 2 的幂
问题描述
谁能建议一种方法来检查一个数字是否是 2 的幂,仅使用 << 运算符,我的意思是没有 + , - * , / ,循环。某种单线的东西。
如果不能,你可以给我最小的算法,使用你想到的 <<
解决方案
如果一个数字是 的幂在二进制表示2
中只有一位。1
即10
,100
等100000
。如果你减去一个,你会得到整个1
。比如10-1=1
,100-1=11
等等。这就是为什么如果你这样做x&(x-1)
,你会得到全零。所以你可以使用下面的公式
x && (!(x&(x-1)))
下面表达式中的第一个 x 是针对 is 的x
情况0
。
推荐阅读
- spring - 方括号的 Spring 模型属性绑定问题
- python-3.x - 如果forms.py中的方法中的语句未处理
- c++ - OpenGL glBufferSubData 偏移问题
- bash - BASH:如何使用 echo 命令计算小数?
- php - 如何通过在codeignter中通过ajax jquery单击boostrap模型中的数据库中的查看详细信息来显示图像
- r - 从 R 中的 scale::percent() 中删除百分比符号
- javascript - 使用 async / await 仍然返回 undefined
- java - Java OpenCV 保存视频文件
- plugins - Confluence 插件:如何从导入的 CSV 以编程方式创建空间和页面?
- javascript - 如何替换对象的深层值?