Что означает >> в PHP?

Рассмотрим:

echo 50 >> 4;

Вывод:

3

Почему он выводит 3?

Ответ 2

Как описано в php.org, оператор >> является оператором побитового сдвига, который сдвигает биты вправо:

$a → $b - Сдвиньте биты шагов $a $b вправо (каждый шаг означает "делить на два" )

50 в двоичном формате 110010, а оператор >> сдвигает эти биты на 4 места в вашем примере кода. Хотя это происходит в одной операции, вы можете подумать об этом несколькими способами:

  • Шаг 1 - 00011001
  • Шаг 2 - 00001100
  • Шаг 3 - 00000110
  • Шаг 4 - 00000011

Так как двоичный 11 равен десятичному значению 3, код выводит 3.

Ответ 3

→ является двоичным оператором с правым сдвигом.

Ваш оператор сдвигает биты в числовом значении 50 в четырех местах справа. Поскольку все целые числа представлены в два дополнения, это равно 3. Легкий способ запомнить это состоит в том, что один сдвиг вправо такой же, как делится на 2, а один сдвиг влево совпадает с умножением на 2.

Ответ 4

Оператор >> называется оператором двоичным сдвигом вправо.

Смещение битов вправо 4 раза совпадает с делением на два, четыре раза подряд. В результате в этом случае будет 3.125. Поскольку 50 - это int, смещение битов вернет пол этого, что составляет 3.

Другими словами, 50 есть 0b110010 в двоичном формате. Сдвинутое 4 раза мы имеем 0b11, что 3 в десятичной форме.

Ответ 6

Он сдвигает бит вниз на четыре места.

50 в двоичном формате - 110010.

Сдвиг вниз по четырем местам равен 11, что равно 3.

Ответ 7

Он назвал правый сдвиг. "Биты левого операнда сдвинуты вправо на количество позиций правого операнда. Позиции бит, оставшиеся слева, заполняются знаковым битом, а биты, сдвинутые справа, отбрасываются. '

Информацию можно найти здесь: http://php.comsci.us/etymology/operator/rightshift.php