$value = 47;
$i = $j = 1;
while (true) {
if (($value & $j) == 0) {
break;
}
$j = $j << 1;
$i++;
}
echo "bit $i is 0";
Run Code Online (Sandbox Code Playgroud)
如果你想消除使用$ i作为计数器,你可以做一些额外的数学运算:
$value = 47;
$j = 1;
while (true) {
if (($value & $j) == 0) {
break;
}
$j = $j << 1;
}
echo "bit ", (log($j) / log(2) + 1), " is 0", PHP_EOL;
Run Code Online (Sandbox Code Playgroud)
+1是必要的,因为你将二进制文件作为第1位而不是第0位启动