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

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

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

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

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

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

Но я не уверен, работает ли он на PHP.

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

Правильна ли вторая формула? и это лучше первого?

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

1 ответ

Следуя трюку с переносом, он это сделает.

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

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

licensed under cc by-sa 3.0 with attribution.