Alguém poderia me explicar o uso <<
e >>
no Go? Eu acho que é semelhante a algumas outras línguas.
go
bitwise-operators
brianoh
fonte
fonte
A partir das especificações em http://golang.org/doc/go_spec.html , parece que pelo menos com números inteiros, é uma mudança binária. por exemplo, o binário 0b00001000 >> 1 seria 0b00000100 e 0b00001000 << 1 seria 0b00010000.
Go aparentemente não aceita a notação 0b para números inteiros binários. Eu estava apenas usando-o como exemplo. Em decimal, 8 >> 1 é 4 e 8 << 1 é 16. Mudar para a esquerda por um é o mesmo que multiplicar por 2, e mudar para a direita por um é o mesmo que dividir por dois, descartando o restante.
fonte
Os operadores << e >> são operadores aritméticos Go .
fonte
Eles são basicamente operadores aritméticos e é o mesmo em outras línguas. Aqui está um exemplo básico de PHP, C, Go
IR
GO Demo
C
C Demo
PHP
Demonstração PHP
Todos eles produziriam
fonte
Os << e >> de Go são semelhantes aos turnos (isto é: divisão ou multiplicação por uma potência de 2) em outros idiomas, mas como o Go é uma linguagem mais segura que o C / C ++, ele realiza algum trabalho extra quando a contagem de turnos é um número .
As instruções de turno em CPUs x86 consideram apenas 5 bits (6 bits em CPUs x86 de 64 bits) da contagem de turnos. Em idiomas como C / C ++, o operador shift se traduz em uma única instrução de CPU.
O seguinte código Go
impressões
enquanto um programa C / C ++ seria impresso
fonte
<<
ou>>
no C / C ++?<<
é turno à esquerda.>>
é deslocamento à direita com extensão de sinal quando o operando esquerdo é um número inteiro assinado e deslocamento à direita com extensão de zero quando o operando esquerdo é um número inteiro sem sinal.Para entender melhor
>>
pensar emPortanto, quando aplicados a um número inteiro não assinado, os bits à esquerda são preenchidos com zero, enquanto que, quando aplicados a um número inteiro assinado, os bits à esquerda são preenchidos com o bit mais à esquerda (que é 1 quando o número inteiro assinado é negativo, conforme 2's complemento).
fonte
Em matemática decimal , quando multiplicamos ou dividimos por 10 , efetuamos os zeros no final do número.
Em binário , 2 tem o mesmo efeito. Então, estamos adicionando um zero ao final ou removendo o último dígito
fonte