O operador de bits NOT (não) em C++ é o acento til do português ~. Diferente dos operadores & e | este operador é aplicado sobre apenas 1 operando e retorna o valor inverso de cada bit. Por exemplo:

 

    0  1    operando1
   ----------
1 0 ~ operando1
    int a = 103;    // binario:  0000000001100111
int b = ~a; // binario: 1111111110011000 = -104

Talvez você se surpreenda ao ver um número negativo como resultado desta operação. Isto ocorre por que o bit mais elevado em uma variável int é chamdo de bi de sinal. Se este bit é 1 o número é negativo. Este modo de encodar positivos e negativos é chamado de complemento para dois. Mais informações na Wikipedia.

De modo complementar, é interessante notar que para qualquer inteiro x, ~x é o mesmo que -x-1.

As vezes, o bit de sinal em uma expressão inteira pode causar algumas surpresas indesejadas.

 

Página de início da referência

Correções, sugestões, e nova documentação devem ser enviadas ao Forum.

O texto de referência do Arduino está baixo uma Licença Creative Commons Attribution-ShareAlike 3.0. Amostras de código utilizadas na referência foram deixados  ao domínio público.

 

O conteúdo desta página é uma tradução para o português a partir do site original do Arduino.

Esta obra está sob uma Licença Creative Commons.

Creative Commons License