0.1.0 |
|
---|
#27 in #加法器
10KB
243 行
逻辑门
尝试使用 Rust 编程语言模拟逻辑门。
待办事项
- 4位加法器(已完成)
- 将项目改为 Rust 库(已完成)
- 负数支持(未完成)
- 8位(未完成)
- 8位加法器(未完成)
用法
如果您想使用这些功能,则需要导入。
use logic_gates::Signal;
use logic_gates::gates::*;
use logic_gates::bytes::FourByte;
示例
// Importing essentials... (You can check them in usage part)
fn main() -> Result<(), Box<dyn std::error::Error> {
let byte1: FourBit = "0100".parse()?;
let byte2: FourBit = "0010".parse()?;
let carry = Signal::Zero;
let (sum, car) = FourBitAdder::send_signal(&carry, &bits1, &bits2);
Ok(())
}
在这个示例中,您可以一起添加两个四字节。您需要发送进位信号作为 Signal::Zero
进位信号对于实现8位加法器很有用。
如果您想显示添加的四位,您可以实现一个显示函数如下。
fn display(bits1: &FourBit, bits2: &FourBit, sum: &FourBit, car: &Signal) {
println!("|---------------------|");
println!(
"| Input 1 : {}{}{}{} = {} |",
bits1.bit1,
bits1.bit2,
bits1.bit3,
bits1.bit4,
bits1.convert()
);
println!(
"| Input 2 : {}{}{}{} = {} |",
bits2.bit1,
bits2.bit2,
bits2.bit3,
bits2.bit4,
bits2.convert()
);
println!("|---------------------|");
if car == &Signal::One {
println!(
"| Output : {car}{}{}{}{} = {} |",
sum.bit1,
sum.bit2,
sum.bit3,
sum.bit4,
sum.convert() + 16
);
} else {
println!(
"| Output : {car}{}{}{}{} = {} |",
sum.bit1,
sum.bit2,
sum.bit3,
sum.bit4,
sum.convert()
);
}
println!("|---------------------|");
}
如果您使用此函数显示,您将获得以下结果。
|---------------------|
| Input 1 : 0100 = 4 |
| Input 2 : 0010 = 2 |
|---------------------|
| Output : 00110 = 6 |
|---------------------|
额外的第五位是进位位,这不是必需的显示位,我们正在处理4位而不是5位。但是,进位位在将来开发8位加法器时很有用。