En operaciones con tipos bool, el operador ! cambia la variable de verdadero a falso o viceversa, pero en números binarios, el operador ~ cambia cada uno de los unos y ceros por su opuesto, cuando encuentra un uno lo cambia por un cero y viceversa, así por ejemplo si tenemos el número binario 01000001 y aplicamos el operador NOT ~ obtendremos 10111110, pero si tenemos una expresión que se evalua como true (o verdadera) y si se aplica el operador !, se obtiene una respuesta false (o falsa).