Rust - Operadores bit a bit
Suponga que la variable A = 2 y B = 3.
No Señor | Operador | Descripción | Ejemplo |
---|---|---|---|
1 | & (Bit a bit AND) | Realiza una operación booleana AND en cada bit de sus argumentos enteros. | (A y B) es 2 |
2 | | (BitWise OR) | Realiza una operación booleana OR en cada bit de sus argumentos enteros. | (A | B) es 3 |
3 | ^ (XOR bit a bit) | Realiza una operación OR exclusiva booleana en cada bit de sus argumentos enteros. OR exclusivo significa que el operando uno es verdadero o el operando dos es verdadero, pero no ambos. | (A ^ B) es 1 |
4 | ! (No bit a bit) | Es un operador unario y opera invirtiendo todos los bits del operando. | (! B) es -4 |
5 | << (Mayús a la izquierda) | Mueve todos los bits de su primer operando a la izquierda el número de lugares especificado en el segundo operando. Los nuevos bits se llenan de ceros. Cambiar un valor a la izquierda en una posición equivale a multiplicarlo por 2, cambiar dos posiciones equivale a multiplicar por 4, y así sucesivamente. | (A << 1) es 4 |
6 | >> (Mayús a la derecha) | Operador de cambio a la derecha binario. El valor del operando izquierdo se mueve hacia la derecha el número de bits especificado por el operando derecho. | (A >> 1) es 1 |
7 | >>> (Desplazamiento a la derecha con cero) | Este operador es como el operador >>, excepto que los bits desplazados a la izquierda son siempre cero. | (A >>> 1) es 1 |
Ilustración
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);
}
Salida
(a & b) => 2
(a | b) => 3
(a ^ b) => 1
(!b) => -4
(a << b) => 16
(a >> b) => 0