如何在PHP中使用Bitwise运算符创建一个数字

时间:2014-12-25 21:26:59

标签: php int bit-manipulation bitwise-operators

0使用PHP,我想在二进制系统中创建一个由给定数量的1组成的数字。例如,如果位数为5,则二进制系统中的输出为11111,即2^5 -1

我知道可以通过以下方式完成:

 pow( 2, ( 32 - $netmask ) ) - 1;

但我担心这会耗费时间,所以我想也许使用按位运算符会更好。例如:

 (~0 >> $netmask) << $netmask

但我不确定它是否适用于PHP

$netmask是第一个1之前的0位数,它在0到32之间.1的数量等于32-$netmask

第二个公式是否正确?它比第一个好吗?

非常感谢

1 个答案:

答案 0 :(得分:1)

以下移位技巧会做到。

function bitnum($num){
    return ~(~0<<$num)
}

检查Fiddle