我有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的最高位。

09-10 12:02
查看更多