<<

Descrição

O operador de deslocamento a esquerda << faz os bits do operando à esquerda do operador serem deslocados a esquerda pelo número de posições especificadas pelo operando à direita do operador.

Sintaxe

variável << numero_de_bits;

Parâmetros

  • variável: Tipos de dados permitidos: byte, int, long
  • numero_de_bits: um número menor ou igual 32. Tipos de dados permitidos: int

Código de Exemplo

int a = 5; // binário: 0000000000000101 int b = a << 3; // binário: 0000000000101000, ou 40 em decimal

※ Notas e Advertências:

Quando você desloca um valor x por y bits (x << y), os y bits mais a esquerda em x são perdidos, literalmente deslocados para fora da existência:

int x = 5; // binário: 0000000000000101 int y = 14; int resultado = x << y; // binário: 0100000000000000 - os primeiros 1 em 101 foram descartados

Se você tem certeza que nenhum dos bits 1 em um valor serão descartados no deslocamento, uma forma simples de pensar do operador de deslocamento à esquerda é que ele multiplica o operando a esquerda por 2 elevado ao operando a direita. Por exemplo, para gerar potências de 2, as seguintes expressões podem ser utilizadas:

Operação Resultado --------- ------ 1 << 0 1 1 << 1 2 1 << 2 4 1 << 3 8 ... 1 << 8 256 1 << 9 512 1 << 10 1024 ...

O exemplo a seguir pode ser utilizado para imprimir um byte recebido no monitor serial, usando o operador de deslocamento à esquerda para mover 1 pelo número de bits especificado, testar o valor com o E (&), e imprimir seu valor (1 ou 0):

// Imprime o valor binário (1 ou 0) de um byte void printOut1(int c) { for (int bits = 7; bits > -1; bits--) { // Compara bits 7-0 no byte if (c & (1 << bits)) { Serial.print("1"); } else { Serial.print("0"); } } }

Ver Também

Exemplo : Tutorial BitMath (Em Inglês)

Please note: These are affiliate links. If you buy the components through these links, We may get a commission at no extra cost to you. We appreciate it.