Rust 位運算子



假設變數 A = 2 且 B = 3。

序號 運算子 描述 示例
1 & (按位與) 對每個整數引數的每一位執行布林與運算。 (A & B) 為 2
2 | (按位或) 對每個整數引數的每一位執行布林或運算。 (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
廣告