用 PHP 找到第一个零位的最简单方法是什么?
例如,假设我有一个整数 47,即 111101,我怎样才能找出第 5 位是第一个未设置的位?这需要工作以适应不同的整数。
$value = 47;
$i = $j = 1;
while (true) {
if (($value & $j) == 0) {
break;
}
$j = $j << 1;
$i++;
}
echo "bit $i is 0";
如果你想消除 $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;
+1 是必要的,因为您将二进制文件作为第 1 位而不是第 0 位启动
用于decbin
返回一个 0 和 1 的字符串。然后,使用 strpos 查找前 0 个字符。
$str = decbin(47);
$result = strpos($str, '0');