Opérations sur les Bits

Complément à Un

Complément de la variable jusqu'à un. La valeur de l'expression contient 1 pour tous les chiffres où la valeur de la variable contient 0, et 0 pour tous les chiffres où la variable contient 1.

b = ~n;

Exemple :

   char a='a',b;
   b=~a;
   Print("a = ",a, "  b = ",b);  
// Le résultat sera :
// a = 97   b = -98

Décalage vers la Droite

La représentation binaire de x est décalée vers la droite de y chiffres. Si la valeur à décaler est d'un type non signé, le décalage logique vers la droite est effectué, c'est à dire que les bits libres du côté gauche seront remplis avec des zéros.

Si la valeur à décaler est d'un type signé, le décalage arithmétique vers la droite est effectué, c'est à dire que les bits libres du côté gauche seront remplis avec la valeur du bit signé (si le nombre est positif, la valeur du bit signé est 0 ; si le nombre est négatif, la valeur du signe du bit est 1).

x = x >> y;

Exemple :

   char a='a',b='b';
   Print("Avant :  a = ",a, "  b = ",b); 
//--- décalage vers la droite
   b=a>>1;
   Print("Après :   a = ",a, "  b = ",b); 
// Le résultat sera :
// Avant :  a = 97   b = 98
// Après :   a = 97   b = 48

Décalage vers la Gauche

La représentation binaire de x est décalée vers la gauche de y chiffres, les chiffres libres du côté droit sont remplis avec des zéros.

x = x << y;

Exemple :

   char a='a',b='b';
   Print("Avant :  a = ",a, "  b = ",b); 
//--- décalage vers la gauche
   b=a<<1;
   Print("Après :   a = ",a, "  b = ",b); 
// Le résultat sera :
// Avant :  a = 97   b = 98
// Après :   a = 97   b = -62

Il n'est pas recommandé de décalé d'un nombre de bits plus grand ou égal à la longueur de la variable décalée, car le résultat de ce type d'opération n'est pas défini.

Opération AND sur les Bits

L'opération AND sur les bits des représentations binaires x et y. La valeur de l'expression contient 1 (TRUE) dans tous les chiffres où à la fois x et y ne contiennent pas 0, et il contient 0 (FALSE) dans tous les autres chiffres.

b = ((x & y) != 0);

Exemple :

   char a='a',b='b';
//--- Opération AND
   char c=a&b;
   Print("a = ",a,"  b = ",b);
   Print("a & b = ",c);
// Le résultat sera :
// a = 97   b = 98
// a & b = 96

Opération OU sur les Bits

L'opération OU sur les bits des représentations binaires x et y. La valeur de l'expression contient 1 dans tous les chiffres où x ou y ne contiennent pas 0, et il contient 0 dans tous les autres chiffres.

b = x | y;

Exemple :

   char a='a',b='b';
//--- Opération OR
   char c=a|b;
   Print("a = ",a,"  b = ",b);
   Print("a | b = ",c);
// Le résultat sera :
// a = 97   b = 98
// a | b = 99

Opération OU Exclusif de bits

L'opération OU exclusif (eXclusive OR) sur les bits des représentations binaires de x et y. La valeur de l'expression contient 1 dans tous les chiffres où x et y ont des valeurs binaires différentes, et il contient 0 dans tous les autres chiffres.

b = x ^ y;

Exemple :

   char a='a', b='b';
//--- Opération OU Exclusif
   char c=a^b;
   Print("a = ",a,"  b = ",b);
   Print("a ^ b = ",c);
// Le résultat sera :
// a = 97   b = 98
// a ^ b = 3

Les opérations sur les bits ne sont effectués qu'avec des entiers.

Voir aussi

Règles de Précédence