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

Рассматривать:

echo 50 >> 4; 

Вывод:

 3 

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

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

50 в двоичном формате 11 0010 , сдвиг вправо на 4 выхода 11 который равен 3.

См. Документацию по PHP и Википедию .

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

$ a >> $ b – Сдвинуть биты шагов $ a $ b вправо (каждый шаг означает «делить на два»)

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

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

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

Арифметический сдвиг вправо.

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

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

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

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

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

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

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

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

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

Сдвинуто четыре места – 11, что равно 3.