# #逻辑 # #加法器

已删除 逻辑门

逻辑门

0.1.0 2023年2月9日

#27 in #加法器

MIT 许可证

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位加法器时很有用。

无运行时依赖