Esta página também está disponível em outros 2 idiomas.

~

[Bitwise Operators]

Descrição

O operador NÃO bit-a-bit em C++ é o caractere til ~. Diferentemente de & e |, o operador bitwise NÃO é aplicado a um único operando a sua direita. O NÃO Bitwise muda cada bit para seu valor oposto: 0 se torna 1, e 1 se torna 0.

Em outras palavras:

0  1    operando1
-----
1  0   ~operando1

Código de Exemplo

int a = 103;  // binário:  0000000001100111
int b = ~a;   // binário:  1111111110011000 = -104

Notas e Advertências

Você pode ficar surpreso ao ver um número negativo como -104 como o resultado dessa operação. Isso acontece porque o bit mais significativo de um valor int é o chamado bit de sinal. Se esse bit é 1, o número é interpretado como negativo. Essa codificação de números positivos e negativos é referido como complemento de dois. Para mais informações, veja o arquivo da Wikipédia a respeito do complemento de dois.

Um comentário adicional: é interessante notar que para qualquer inteiro x, ~x é o mesmo que -x - 1.

As vezes, o bit de sinal em uma expressão pode causar alguns efeitos indesejados, veja a página do operador de deslocamento à direita (>>), por exemplo, para mais detalhes.

Ver Também