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

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

echo 50 >> 4; 

Вывод:

 3 

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

    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.