在写代码时遇到了“判断一个正整数是否是2的N次方”的问题,不想调用 java.lang 的 Math 类库进行浮点运算,觉得转换为浮点不是个好办法. 遂在网上搜索了一下,发现有人列出来好几种写法,列举几种: 1.通过循环除2:这种方法不值一提,略过: 2.针对32位/64位只有有限个 2 的N次方的常量值,逐个进行比较:额...这个也略过: 3.通过正则表达式进行文本匹配,判断是否2的后面都是 0 :这个绕得更远了... 最后,有一种最简洁优雅的写法:(value & (value -1)) =