用PHP找到第一个零位的最简单方法是什么?
例如,假设我有一个整数47,即111101,我怎么能发现第5位是第一个未设置的位?这需要适应不同的整数。
答案 0 :(得分: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位
启动答案 1 :(得分:4)
使用decbin
返回0和1的字符串。
然后,使用strpos查找前0个字符。
$str = decbin(47);
$result = strpos($str, '0');