~ (NON au niveau du bit)
Description :
L’opérateur bit à bit NOT en C++ est le caractère tilde ~. Contrairement à & et |, l’opérateur bit à bit NOT s’applique à un seul opérande à sa droite. L’opérateur bit à bit NOT transforme chaque bit en son opposé : 0 devient 1 et 1 devient 0.
En d’autres termes :
0 1 operand1 ----- 1 0 ~operand1
Exemple de code :
int a = 103; // binary: 0000000001100111 int b = ~a; // binary: 1111111110011000 = -104
Remarques et avertissements :
Vous pourriez être surpris de voir un nombre négatif comme -104 comme résultat de cette opération. En effet, le bit de poids fort d’une variable int est ce qu’on appelle le bit de signe. Si le bit de poids fort est 1, le nombre est interprété comme négatif. Ce codage des nombres positifs et négatifs est appelé complément à deux. Pour plus d’informations, consultez l’article Wikipédia sur le complément à deux.
Par ailleurs, il est intéressant de noter que pour tout entier x, ~x est égal à -x – 1.
Parfois, le bit de signe d’une expression d’entier signé peut entraîner des surprises.
Source : https://docs.arduino.cc/language-reference/en/structure/bitwise-operators/bitwiseNot/