int — Как сделать число с помощью побитовых операторов в переполнении стека

0Using PHPЯ хочу сделать число, которое состоит из заданного числа 1 в двоичной системе. Например, если число битов равно 5, вывод будет 11111 в двоичной системе, т.е. 2^5 -1,

Я знаю, что это может быть сделано:

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

Но я боюсь, что это займет много времени, поэтому я подумал, может быть, лучше использовать побитовые операторы. например:

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

Но я не уверен, что это работает в PHP,

($netmask это число 0 цифр перед первой 1, и оно находится между 0 и 32. Число 1 равно 32-$netmask)

Верна ли вторая формула? и это лучше чем первый?

большое спасибо

0

Решение

Следующий трюк смены сделает это.

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

Проверить скрипка

1

Другие решения

Других решений пока нет …