我有5个不同的值,保存为10010位。
我从数据库中得到一个int值(不能改变它),所以24表示11000
我知道我可以通过使用得到最大的一点
if ((decbin($d) & 16) == 16)
但是如果第一个是0,我必须检查下一个位,如果是0,我必须…
所以,毕竟我会有一个IFS块,如果有更多的位,块更大。
有没有一种简单的方法可以用1得到最高位的“id”(或者值,这无关紧要)?
最佳答案
对。计算数字的底2对数并floor
$highbit = floor(log($d, 2));
例如,如果
$highbit
是5,则表示第5位是设置为1的最高位。