Reference   Language (extended) | Libraries | Comparison | Changes

Operador NOT (~) a nivel de bits

El operador bit a bit NOT, en C++, es el caracter ~. A diferencia de los operadores AND (&) y OR (|), el operador NOT es aplicado únicamente a un operando. Este operador lo que hace es cambiar cada bit de la palabra por su contrario: los 0 pasan a ser 1, y viceversa. Por ejemplo:

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


    int a = 103;    // en binario:  0000000001100111
    int b = ~a;     // en binario:  1111111110011000 = -104

Posiblemente te sorprendas de ver que el resultado da un valor negativo. Esto es debido a que el bit más significativo (msb) es llamado, también, bit de signo. Si este bit es un 0, el valor del número será interpretado como positivo, mientras que si es 1, se interpretará como un negativo. Esta codificación para los números positivos y negativos se denomina "'Complemento a 2'" (Ca2). Para más información, lee el artículo correspondiente en la Wikipedia en complemento a dos.

Como anotación, es interesante saber que para cualquier entero X, ~X es lo mismo que X-1

A veces, el bit de signo en un entero con signo (signed int) puede causar algunos problemas imprevistos.

Página principal Referencia

Correcciones, sugerencias, y nueva documentación deberán ser publicadas en el Foro (castellano) o en el Foro (inglés).

El texto de la referencia de Arduino está publicado bajo la licencia Creative Commons Reconocimiento-Compartir bajo la misma licencia 3.0. Los ejemplos de código de la referencia están liberados al dominio público.

Share