Может кто-нибудь объяснить мне использование <<
и >>
в Go? Я думаю, это похоже на некоторые другие языки.
go
bitwise-operators
brianoh
источник
источник
Из спецификации на http://golang.org/doc/go_spec.html кажется, что, по крайней мере, с целыми числами, это двоичный сдвиг. например, двоичный 0b00001000 >> 1 будет 0b00000100, а 0b00001000 << 1 будет 0b00010000.
Go явно не принимает нотацию 0b для двоичных целых чисел. Я просто использовал это для примера. В десятичном формате 8 >> 1 равно 4, а 8 << 1 равно 16. Сдвиг влево на единицу аналогичен умножению на 2, а сдвиг вправо на единицу - то же самое, что деление на два с отбрасыванием любого остатка.
источник
Операторы << и >> являются арифметическими операторами Go .
источник
Это в основном арифметические операторы, и то же самое на других языках, вот базовый пример PHP, C, Go
ИДТИ
GO Демо
С
C Демо
PHP
Демо PHP
Все они выведут
источник
Знаки << и >> в Go похожи на сдвиги (то есть деление или умножение на степень двойки) в других языках, но поскольку Go более безопасен, чем C / C ++, он выполняет дополнительную работу, когда количество сдвигов является числом ,
Инструкции сдвига в процессорах x86 учитывают только 5 бит (6 бит на 64-битных процессорах x86) счетчика сдвига. В таких языках, как C / C ++, оператор сдвига преобразуется в одну инструкцию ЦП.
Следующий код Go
печать
в то время как программа C / C ++ будет печатать
источник
<<
или>>
в нем?<<
левый сдвиг.>>
представляет собой сдвиг вправо с расширением знака, когда левый операнд является целым числом со знаком, и сдвиг вправо с расширением нуля, когда левый операнд является целым числом без знака.Чтобы лучше понять,
>>
подумайте оТаким образом, при применении к целому числу без знака биты слева заполняются нулем, тогда как при применении к целому числу со знаком биты слева заполняются крайним левым битом (который равен 1, когда целое число со знаком является отрицательным в соответствии с двумя дополнение).
источник
В десятичной математике , когда мы умножаем или делим на 10 , мы производим нули в конце числа.
В двоичном , 2 имеют тот же эффект. Итак, мы добавляем ноль в конец или удаляем последнюю цифру
источник