>> (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
& 0xFFpra garantir que sobrou só o byte que você quer.