Php 有人能解释这个功能吗?
这是一个简单的程序,可以确定一个整数是否是4的幂,但当我们取整数255和256时,我无法理解这一部分:Php 有人能解释这个功能吗?,php,bitwise-operators,Php,Bitwise Operators,这是一个简单的程序,可以确定一个整数是否是4的幂,但当我们取整数255和256时,我无法理解这一部分: $x = $n; while ($x % 4 == 0) { $x /= 4; } if($x == 1) 有人能给我解释一下吗 <?php function is_Power_of_four($n) { $x = $n;
$x = $n;
while ($x % 4 == 0) {
$x /= 4;
}
if($x == 1)
有人能给我解释一下吗
<?php
function is_Power_of_four($n)
{
$x = $n;
while ($x % 4 == 0) {
$x /= 4;
}
if($x == 1)
{
return "$n is power of 4";
}
else
{
return "$n is not power of 4";
}
}
print_r(is_Power_of_four(4)."\n");
print_r(is_Power_of_four(255)."\n");
print_r(is_Power_of_four(256)."\n");
?>
在C等较老的语言中,它是惯用的 大于1(二的幂)的数字
x
将具有二进制表示形式10…
,其中…
是任意数量的零
小于二次幂的一个数(x-1
)将具有二进制表示形式1…
,其中…
是任意一个数。此外,它将比x
少一个二进制数字。同样明显的是,从2的幂中减去1会翻转原始数字中的所有位:没有其他数字具有此属性
&
是按位AND运算符。参考文献
因此
x&(x-1)
将为0,当且仅当x
是2的精确幂时。查找。对我来说,副本太窄了。这个问题更多的是关于按位AND运算符的一个特殊用法。我知道按位运算符,但它用于查找整数是否是2的幂,可以从第3行更具体一些吗?我不明白“一比二的幂(比如x-1)小的一个数会有……例如,取16,即0b10000。15是0b1111。0b10000&0b1111是0。