2个版本

0.0.2 2022年11月4日
0.0.1 2022年4月21日

#787 in 数学

MIT许可证

15KB
254

bitmath

用于任意宽度位运算的工具。最初设计用于编写幻想控制台/处理器模拟器。

不稳定。正在进行中。自行承担风险。

<N>

bitmath的核心。 Bits 是一个具有位运算和算术支持(正在进行中)的泛型大小的位向量。

例如,您可以为3位数字添加一对数字并找出是否溢出

let a = Bits::<3>::try_from("101").unwrap();
let b = Bits::<3>::try_from("110").unwrap();
let (result, overflowed) = a.unsigned_add(b);
println!("result: {}, overflowed: {}", result, overflowed);
// result: Bits<3>{ 011 | dec 3/3 | hex 0x3/0x3 }, overflowed: true

或者您可以使用 bitslice! 宏以传统的位运算语法从 Bits 中选择子集

let word = Bits::<16>::try_from("1011 0001 0110 1011").unwrap();
let high_byte = bitslice!(word[15:8]);
let low_byte = bitslice!(word[7:0]);
println!("{}\n{}\n{}", word, high_byte, low_byte);
// Bits<16>{ 1011 0001 0110 1011 | dec 45419/-20117 | hex 0xb16b/-0x4e95 }
// Bits<8>{ 1011 0001 | dec 177/-79 | hex 0xb1/-0x4f }
// Bits<8>{ 0110 1011 | dec 107/107 | hex 0x6b/0x6b }

无运行时依赖