Rust 也提供了基本的位操作给整型类型运算。常见操作如下

  1. 左移 (<<)
  2. 右移 (>>)
  3. 与 (&)
  4. 或 (|)
  5. 非 (!), 取反操作
  6. 异或 (^)

与 位操作与 C/C++ 中不同的是

  1. C 语言的取反操作符为 ~,布尔操作的非操作为!
  2. C 语言的位操作不会严格检查两个操作数的类型,Rust 要求 与/或/非/异或 的操作必须一致,否则编译错误。
  3. C 语言的左右移操作当移位数超过位数时,通常会编译报警,但 Rust 检测到移位超出位数后编译会立即报错,如果是运行时出现时,则会引起恐慌 panic) 终止程序。
fn main() {
    println!("{:x}", 0x0000_0001 << 4);
    println!("{:x}", 0x1000_0000 >> 4);
    println!("{:x}", 0x1000_0000 | 0x0000_0001);
    println!("{:x}", 0xffff_ffffu32 & 0xffff_0000u32);
    println!("{:x}", !0xffff_0000u32);
    println!("{:x}", 0xffff_0000u32 ^ 0x00ff_00ffu32);
}