>> (deslocar à direita)

resultado = a >> n

O >> faz o contrário do <<: empurra os bits n casas pra direita, e os que saem pela direita são descartados. Cada casa deslocada equivale a dividir por 2 (descartando o resto). É ótimo pra extrair a parte alta de um valor ou ler bits de posições mais altas.

Sintaxe

resultado = a >> n;

Parâmetros

  • a: o valor inteiro cujos bits serão deslocados.
  • n: quantas casas deslocar pra direita.

Retorno

Um inteiro com os bits de a movidos n posições pra direita.

Exemplo

void setup() {
  Serial.begin(9600);

  int leitura = 826; // ex.: valor de 0..1023 de um analogRead

  // separa o byte alto trazendo os bits de cima pra baixo
  byte parteAlta = (leitura >> 8) & 0xFF;
  Serial.println(parteAlta); // 3

  // >> 1 é o mesmo que dividir por 2
  Serial.println(20 >> 1); // 10
}

void loop() {}

Notas e cuidados

  • Em tipos com sinal e negativos, o comportamento do bit de sinal pode variar; ao mexer com bits crus prefira tipos unsigned.
  • Deslocar mais casas do que o tipo tem de bits é comportamento indefinido — não conte com um resultado específico.
  • Combine com & 0xFF pra garantir que sobrou só o byte que você quer.

Quer aprender a usar isso em projetos reais, do zero?

Conhecer o Curso Maker