时间:2021-07-01 10:21:17 帮助过:10人阅读
$a = 765; echo pow(2, floor(log($a, 2)));
------解决方案--------------------
1,保留最左边的1就行了,位运算。
[liangdong@bb-browser-test00.vm.baidu.com php_project]$ php main.php
765 => 512
0 => 0
256 => 256
1 => 1
3 => 2
255 => 128
257 => 256
[liangdong@bb-browser-test00.vm.baidu.com php_project]$ cat main.php
> $off) != 1) {
++ $off;
}
return 1 << $off;
}
}
$cases = array(765, 0, 256, 2.3, 1, 3, 255, 257);
foreach ($cases as $value) {
if (($ret = bit_alg($value)) !== false) {
echo $value . " => " . $ret . PHP_EOL;
}
}
?>
------解决方案--------------------
如果用二进制方式计算,那么$A = 765; $t = decbin($A); echo bindec(str_pad(1, strlen($t), '0'));
------解决方案--------------------