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; }