Rust - 按位运算符


假设变量 A = 2 且 B = 3。

先生编号 操作员 描述 例子
1 &(按位与) 它对其整数参数的每一位执行布尔 AND 运算。 (A & B) 为 2
2 | (按位或) 它对其整数参数的每一位执行布尔 OR 运算。 (A | B) 为 3
3 ^(按位异或) 它对其整数参数的每一位执行布尔异或运算。异或意味着操作数一为真或操作数二为真,但不能两者都为真。 (A^B) 为 1
4 !(按位非) 它是一个一元运算符,通过反转操作数中的所有位来进行运算。 (!B) 为 -4
5 <<(左移) 它将第一个操作数中的所有位向左移动第二个操作数中指定的位数。新的位用零填充。将值左移一位相当于乘以 2,左移两位相当于乘以 4,依此类推。 (A << 1) 是 4
6 >>(右移) 二进制右移运算符。左操作数的值向右移动右操作数指定的位数。 (A >> 1) 是 1
7 >>>(右移零) 该运算符与 >> 运算符类似,只是向左移动的位始终为零。 (A >>> 1) 是 1

插图

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);
}

输出

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