Fab*_*enM 5 math integer fpga rust
在 Rust 中,标准整数类型的大小为8、16、32、64、128 位。但是是否可以操作具有非标准大小的整数类型,例如u24, i7, ... ?
这些非标准尺寸对于 FPGA 算法仿真很有用。
Rust 本身并不支持任意大小的整数类型(例如其标准库u24或i7作为其标准库的一部分)。但是,您可以使用现有的整数类型和仔细的操作来模拟此类类型,以确保仅使用相关位。例如,您可以通过确保仅使用低 24 位来使用au32来表示 a 。u24
下面是如何在 Rust 中定义和使用u24类型的示例:
struct U24(u32);
impl U24 {
fn new(value: u32) -> Self {
U24(value & 0x00FF_FFFF)
}
fn get(&self) -> u32 {
self.0
}
// Add other methods as needed, ensuring that you mask the upper bits as appropriate.
}
fn main() {
let a = U24::new(0x123456);
let b = U24::new(0x654321);
// Example operation: addition
let sum = U24::new(a.get() + b.get());
println!("Sum: {:X}", sum.get());
}
Run Code Online (Sandbox Code Playgroud)
对于复杂或性能关键的应用程序,您可能需要研究类似的包,bitvec它允许对各个位进行更直接的控制,并可用于模拟任意位长度的整数。
尝试这里的代码
| 归档时间: |
|
| 查看次数: |
165 次 |
| 最近记录: |