aula 289

Operação NOT negação bit a bit e números em Complemento de Dois

Nesta aula vamos aprender como funciona o operador NOT ( ~ ) bit a bit, o operador de negação bit a bit na linguagem de programação C. Também vamos aprender como representar um número negativo em binário por meio do método Complemento de Dois.

O operador de negação not bit a bit representado pelo sinal gráfico ~ é bastante simples. Ele nega o valor de cada bit. Vamos a um exemplo para facilitar a compreensão.

O valor decimal 1 pode ser representado em binário por: 00000001

Ao negar o valor anterior com o operador de negação bit a bit teremos: 11111110

~00000001 = 11111110

Perceba que cada bit teve seu valor invertido. Este resultado, se convertido em decimal, representa o número -2.

Aqui está a parte mais confusa. Para entender porque esta sequência de bits representa o -2 precisamos entender como funciona a representação de números negativos no computador, chamada de complemento de dois.

Representando Números Negativos com Complemento de Dois

Complemento de dois é um método (um algoritmo) para encontrarmos o equivalente negativo em binário de um número positivo. Ele consiste em três passos simples:

  • escrever o número positivo em binário;
  • inverter seus bits;
  • somar mais 1.

Vamos a um exemplo para facilitar a compreensão.

Como representar em binário o número -2?

Vamos seguir os passos citados acima:
– o 2 em binário é: 00000010
– ao inverter os bits temos: 11111101
– ao somar +1 temos: 11111110

Este resultado 11111110 representa em decimal o número -2.

00000010 <– 2 em binário
11111101 <– 2 invertido bit a bit
+ 1 <– soma 1
———–
11111110 <– resultado

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

int main(){

    int a, b;
    a = 1;
    b = ~a;
    printf("\ta: %d\t~a: %d\n", a, b);

    a = 2;
    b = ~a;
    printf("\ta: %d\t~a: %d\n", a, b);

    a = 3;
    b = ~a;
    printf("\ta: %d\t~a: %d\n", a, b);

    a = 4;
    b = ~a;
    printf("\ta: %d\t~a: %d\n", a, b);

    return 0;
}

Deixe um comentário

dois + doze =

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.