¿Podría alguien explicarme el uso de <<
y >>
en Go? Supongo que es similar a algunos otros idiomas.
go
bitwise-operators
brianoh
fuente
fuente
De la especificación en http://golang.org/doc/go_spec.html , parece que al menos con números enteros, es un cambio binario. por ejemplo, el binario 0b00001000 >> 1 sería 0b00000100 y 0b00001000 << 1 sería 0b00010000.
Go aparentemente no acepta la notación 0b para enteros binarios. Solo lo estaba usando como ejemplo. En decimal, 8 >> 1 es 4 y 8 << 1 es 16. Desplazarse a la izquierda en uno es lo mismo que multiplicar por 2, y desplazar a la derecha en uno es lo mismo que dividir entre dos, descartando cualquier resto.
fuente
Los operadores << y >> son Operadores aritméticos Go .
fuente
Son básicamente operadores aritméticos y es lo mismo en otros lenguajes aquí hay un ejemplo básico de PHP, C, Go
VAMOS
IR Demo
C
C Demo
PHP
Demostración de PHP
Todos saldrían
fuente
Los << y >> de Go son similares a los cambios (es decir: división o multiplicación por una potencia de 2) en otros idiomas, pero como Go es un lenguaje más seguro que C / C ++, hace un trabajo adicional cuando el recuento de turnos es un número .
Las instrucciones de cambio en CPU x86 consideran solo 5 bits (6 bits en CPU x86 de 64 bits) del recuento de cambios. En lenguajes como C / C ++, el operador de turno se traduce en una sola instrucción de CPU.
El siguiente código de Go
huellas dactilares
mientras que un programa C / C ++ imprimiría
fuente
<<
o>>
en C / C ++?<<
es desplazamiento a la izquierda.>>
es un desplazamiento a la derecha con extensión de signo cuando el operando de la izquierda es un entero con signo, y es un desplazamiento a la derecha de extensión cero cuando el operando de la izquierda es un entero sin signo.Para entender mejor,
>>
piensa enEntonces, cuando se aplica a un entero sin signo, los bits de la izquierda se rellenan con cero, mientras que cuando se aplican a un entero con signo, los bits de la izquierda se rellenan con el bit más a la izquierda (que es 1 cuando el entero con signo es negativo según 2 complemento).
fuente
En matemáticas decimales , cuando multiplicamos o dividimos por 10 , aplicamos los ceros al final del número.
En binario , 2 tiene el mismo efecto. Entonces estamos agregando un cero al final o quitando el último dígito
fuente