Странное поведение при печати в PHP?

Почему следующий код выводит 128?

<?php 
    print 4 << 5; 
?>

2 ответа

Решение

Потому что это побитовый оператор. Я думаю, что это означает 4 умножить на 2^5, потому что этот оператор означает

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

так что пять шагов. Это 4 * 2 * 2 * 2 * 2 * 2 (но я предполагаю здесь; все происходит на уровне битов).

Обратитесь к побитовым операторам:

Мы должны найти 4 << 5. Это означает сдвинуть биты 4 5 раз влево:

4 is 00000000000000000000000000000100
4 << 5 after shifting is 00000000000000000000000010000000
00000000000000000000000010000000 is 2^7 = 2*2*2*2*2*2*2 = 128
Другие вопросы по тегам