Operadores de Deslocamento de Bits no Arduino

Operadores de Deslocamento de Bits no Arduino

Nesta lição vamos apresentar dois operadores que permitem realizar manipulação de bits em um valor numérico no Arduino, efetuando o deslocamento desses bits (multiplicando ou dividindo seus valores).

Podemos deslocar os bits de um valor numérico utilizando os operadores de deslocamento de bits << e >>.

Operador Significado
<< Deslocamento de bits à esquerda
>> Deslocamento de bits à direita

Imaginemos um valor numérico qualquer, como por exemplo o número 32. Expressando esse valor em binário teremos:
00100000

Se efetuarmos o deslocamento do bit de valor 1, que está na posição 5, uma casa binária para a direita, obteremos o valor:
00010000

O qual em decimal equivale a 16 – metade do valor original. Desta forma, deslocar um bit para a direita equivale a dividir seu valor por 2 a cada casa binária deslocada, enquanto o deslocamento de um bit à esquerda significa que seu valor será multiplicado por dois, a cada casa deslocada.

Desta forma, para um dado bit x:

x << 1 = x * 2
x << 2 = x * 4
x << 3 = x * 8
x >> 1 = x / 2
x >> 2 = x / 4
x >> 3 = x / 8

E assim por diante.

É interessante notar que o microcontrolador do Arduino consegue realizar o deslocamento de bits de forma mais eficiente do que realizar operações de multiplicação e divisão, e por isso é comum utilizá-los em casos em que essas operações são necessárias no código.

Exemplo

// Usando operadores de deslocamento de bits
int x = 64;
int valorFinal = 0;
void setup() {
  Serial.begin(9600);
}
void loop() {
  Serial.print("Valor inicial de x: ");
  Serial.println(x);
  Serial.println(x, BIN);
  valorFinal = x << 1;
  Serial.print("Valor apos deslocar um bit a esquerda (multiplicar por 2): ");
  Serial.println(valorFinal);
  Serial.println(valorFinal, BIN);
  Serial.print("Deslocando valor de x 3 casas a direita (div. / 8): ");
  valorFinal = x >> 3;
  Serial.println(valorFinal);
  Serial.println(valorFinal, BIN);
 
 delay(3000);
}

 

operadores de Deslocamento de bits no Arduino

Neste exemplo, declaramos uma variável x com valor atribuído igual a 64, e criamos também uma variável chamada de valorFinal, com valor inicial igual a zero.

Exibimos o valor de x em binário e em decimal no monitor serial, e então atribuímos seu valor à valorFinal, deslocando seus bits uma casa binária para a esquerda. Isso equivale a multiplicar por dois o valor de cada bit. Exibimos o conteúdo de valorFinal no monitor serial.

Então, realizamos a atribuição de valores de x para valorFinal novamente, porém dessa vez deslocando os bits do número 3 casas binárias para a direita. Isso equivale a dividir o número por 8 (23). Por fim, exibimos o valor da variável, tanto em decimal quanto em binário.

Anterior: Funções de Manipulação de Bits com Arduino

Sobre Fábio dos Reis (1195 Artigos)
Fábio dos Reis trabalha com tecnologias variadas há mais de 30 anos, tendo atuado nos campos de Eletrônica, Telecomunicações, Programação de Computadores e Redes de Dados. É um entusiasta de Ciência e Tecnologia em geral, adora Viagens e Música, e estuda idiomas, além de ministrar cursos e palestras sobre diversas tecnologias em São Paulo e outras cidades do Brasil.

Escreva um comentário

Seu e-mail não será divulgado


*