查找数字是否为 2 的幂
2022-08-30 19:31:46
只是出于好奇,你怎么能知道一个数字x是否是二的幂(x = 2^n)而不使用递归。
谢谢
一种方法是使用按位 AND。如果一个数字是二的幂(例如,8=1000),则它与它的前身(7=0111)没有共同的位。所以你可以写:$x
($x & ($x - 1)) == 0
注意:这将给出$x == 0 的误报。
从数字中减去1,然后用原始数字减去它。如果结果为零,则为二的幂。
if (((n-1) & n) == 0) {
// power of two!
}
(对不起,我的PHP生锈了...)