aula 288

Operações bit a bit em C. Deslocamento à esquerda e à direita

Na aula anterior vimos que para de fato conseguir um arquivo compactado com o algoritmo de huffman precisamos trabalhar com manipulação de bits. Então, vamos fazer isso a partir desta aula.

Nesta aula vamos iniciar mais um módulo em nosso Curso de Programação C. Como realizar operações bit a bit com a linguagem C. Nesta aula vamos aprender como fazer um deslocamento bit a bit à esquerda ou à direita com a linguagem C.

Na linguagem de programação C um deslocamento bit a bit pode ser feito de forma muito simples com os sinais matemáticos de maior ou menor.

<< Deslocamento à esquerda
>> Deslocamento à direita

Deslocamento bit a bit à esquerda em C

Para entender como esta operação funciona vamos a um exemplo.

Seja uma variável “a” com o valor 1 ( a = 1; ). O valor 1 em binário com 8 bits é: 00000001

Um deslocamento à esquerda pode ser feito da forma como mostrado a seguir:
b = a << 1;

Este deslocamento joga fora o bit mais significativo (bit mais à esquerda) e acrescenta um zero à direita. Assim, a variável b terá o seguinte conjunto de bits: 00000010, que em decimal é o número 2.

Também podemos fazer um deslocamento de duas unidades em a, assim:
b = a << 2;

Este deslocamento irá jogar fora os dois bits mais significativos (mais à esquerda) e acrescentar dois bits zeros à direita. Assim, o resultado na variável b será: 00000100, que em decimal é o número 4.

Perceba que o deslocamento à esquerda é equivalente à multiplicação por 2.

Deslocamento bit a bit à direita em C

Esta operação é similar à operação de deslocamento à esquerda, apenas invertendo a direção do deslocamento. Vamos a um exemplo.

Seja “a” uma variável inicializada com o valor 10 ( a = 10; ). O valor 10 em binário com 8 bits é: 00001010

Um deslocamento à direita pode ser feito da forma como mostrado a seguir:
b = a >> 1;

Este deslocamento joga fora o bit menos significativo (bit mais à direita) e acrescenta um zero à esquerda. Assim, a variável b terá o seguinte conjunto de bits: 00000101, que em decimal é o número 5.

Também podemos fazer um deslocamento de duas unidades em a, assim:
b = a >> 2;

Este deslocamento irá jogar fora os dois bits menos significativos (mais à direita) e acrescentar dois bits zeros à esquerda. Assim, o resultado na variável b será: 00000010, que em decimal é o número 2.

Perceba que o deslocamento à direita é equivalente à divisão inteira por 2.

Código de exemplo em C para deslocamentos de bits à esquerda e à direita

/*
             Deslocamento bit a bit na linguagem C

             Código escrito por Wagner Gaspar
             Outubro de 2021
*/

int main(){

    // Deslocamento à esquerda
    int a, b;
    a = 1;      // 0001
    b = a << 1; // 0010 = 2

    printf("a: %d\tb: %d\n", a, b);

    b = a << 2; // 0100 = 4
    printf("a: %d\tb: %d\n", a, b);

    b = a << 3; // 1000 = 8
    printf("a: %d\tb: %d\n", a, b);


    // Deslocamento à Direita
    a = 10;     // 1010
    b = a >> 1; // 0101 = 5

    printf("a: %d\tb: %d\n", a, b);

    b = a >> 2; // 0010 = 2
    printf("a: %d\tb: %d\n", a, b);

    b = a >> 3; // 0001 = 1
    printf("a: %d\tb: %d\n", a, b);

    return 0;
}

Deixe um comentário

dois × um =

Wagner Gaspar

Capixaba de São Gabriel da Palha, Espírito Santo. Bacharel em Ciência da Computação pela Universidade Federal do Amazonas e mestre em informática pela Universidade Federal do Espírito Santo.