Rust - Opérateurs au niveau du bit

Supposons que la variable A = 2 et B = 3.

Sr. Non Opérateur La description Exemple
1 & (ET au niveau du bit) Il effectue une opération booléenne AND sur chaque bit de ses arguments entiers. (A & B) est égal à 2
2 | (BitWise OU) Il effectue une opération booléenne OU sur chaque bit de ses arguments entiers. (A | B) vaut 3
3 ^ (XOR au niveau du bit) Il effectue une opération OU exclusive booléenne sur chaque bit de ses arguments entiers. OU exclusif signifie que l'opérande un est vrai ou que l'opérande deux est vrai, mais pas les deux. (A ^ B) vaut 1
4 ! (Pas au niveau du bit) C'est un opérateur unaire et fonctionne en inversant tous les bits de l'opérande. (! B) vaut -4
5 << (Maj gauche) Il déplace tous les bits de son premier opérande vers la gauche du nombre de places spécifié dans le deuxième opérande. Les nouveaux bits sont remplis de zéros. Décaler une valeur vers la gauche d'une position équivaut à la multiplier par 2, déplacer deux positions équivaut à multiplier par 4, et ainsi de suite. (A << 1) vaut 4
6 >> (décalage vers la droite) Opérateur de décalage binaire vers la droite. La valeur de l'opérande de gauche est déplacée vers la droite du nombre de bits spécifié par l'opérande de droite. (A >> 1) vaut 1
sept >>> (décalage à droite avec zéro) Cet opérateur est exactement comme l'opérateur >>, sauf que les bits décalés vers la gauche sont toujours nuls. (A >>> 1) est 1

Illustration

fn main() {
   let a:i32 = 2;     // Bit presentation 10
   let b:i32 = 3;     // Bit presentation 11

   let mut result:i32;

   result = a & b;
   println!("(a & b) => {} ",result);

   result = a | b;
   println!("(a | b) => {} ",result) ;

   result = a ^ b;
   println!("(a ^ b) => {} ",result);

   result = !b;
   println!("(!b) => {} ",result);

   result = a << b;
   println!("(a << b) => {}",result);

   result = a >> b;
   println!("(a >> b) => {}",result);
}

Production

(a & b) => 2
(a | b) => 3
(a ^ b) => 1
(!b) => -4
(a << b) => 16
(a >> b) => 0