Rust 也提供了基本的位操作给整型类型运算。常见操作如下
- 左移 (
<<) - 右移 (
>>) - 与 (
&) - 或 (
|) - 非 (
!), 取反操作 - 异或 (
^)
与 位操作与 C/C++ 中不同的是
- C 语言的取反操作符为
~,布尔操作的非操作为! - C 语言的位操作不会严格检查两个操作数的类型,Rust 要求
与/或/非/异或的操作必须一致,否则编译错误。 - 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); }