原文链接:Paper
本文展示一个rust
位操作的基本用法,首先定义一个u8
的数据
// 初始值为1
let mut buf = 1u8;
println!("{:08b}",buf);
输出结果为
00000001
左移
buf <<= 2;
此操作为向左移动两位
输出结果为
00000100
或运算
buf |=0b0000_0110;
println!("{:08b}",buf);
输出结果为
00000110
与运算
buf &=0b0000_0010;
println!("{:08b}",buf);
输出结果为
00000010
非操作
buf = !buf;
println!("{:08b}",buf);
输出结果为:
11111101
与非运算
buf ^=0b0000_0010;
println!("{:08b}",buf);
运行结果为
11111101
完整测试代码为:
#[cfg(test)]
mod test{
#[test]
fn test(){
let mut buf = 1u8;
println!("{:08b}",buf);
buf <<= 2;
println!("{:08b}",buf);
buf |=0b0000_0110;
println!("{:08b}",buf);
buf &=0b0000_0010;
println!("{:08b}",buf);
buf = !buf;
println!("{:08b}",buf);
buf ^=0b0000_0010;
println!("{:08b}",buf);
}
}