Нет, оператор <<
является оператором сдвига битов.Он берет биты числа, такие как 00101
, и сдвигает их влево n мест, что приводит к умножению числа на степень два.Так что x << y
это x * 2^y
.Это результат того, как числа хранятся внутри компьютера на компьютерах, которые являются двоичными.
Например, число 1
, когда оно хранится как 32-разрядное целое число в дополнении 2 (что это такое):
00000000000000000000000000000001
Когда вы делаете
1 << 20
Вы берете все 1
в этом двоичном представлении и перемещаете их по 20
местам:
00000000000100000000000000000000
Что составляет 2 ^ 20.Это также работает для представления величины знака, дополнения 1 и т. Д.
Другой пример, если вы возьмете представление 5
:
00000000000000000000000000000101
И выполните 5 << 1
, вы получите
00000000000000000000000000001010
То есть 10
или 5 * 2^1
.
И наоборот, >>
будет делить на степень 2, перемещая биты надна вправо n мест.