javascript - 使用逻辑门的二进制减法
问题描述
我一直在尝试从逻辑电路图中重新创建一个二进制全减法器,但我似乎无法获得准确的输出。我已经用几种方法重写了它,并在没有循环的情况下运行它并以不同的方式表达逻辑。看一些例子,我真的看不出有什么问题。这个想法是获取 2 n 位数字作为输入并屏蔽每个位,然后执行减法逻辑。我有一个工作加法器,我可以通过反转第二个值来重用它,但我这样做是为了教育目的,让自己熟悉 ALU 的逻辑。
class Alu {
constructor(b = 8) {
this.bits = b;
}
sub(y, z) {
let m = 1; //mask
let d = 0; //diff
let b = 0; //borrow
let w = 10; //base
for (let i = 0; i < this.bits; i++) {
let yM = y & m;
let zM = z & m;
d |= b ^ (yM ^ zM);
b = (~yM & zM) | (~yM & b) | (~zM & b);
m <<= 1;
}
console.log(y.toString(w));
console.log(z.toString(w));
console.log(d.toString(w));
}
}
以下是我正在使用的参考图片:
解决方案
推荐阅读
- html - HTML/CSS:在同一水平线上允许网站的导航栏和标题出现问题
- python - 如何中断调用 shell 脚本的 Python 程序?
- python - 从 cmd 加载 jupyter-lab 时收到错误是否有任何解决方案
- angular - 从多选组合框中获取所选项目
- node.js - 如何创建 Windows 10 批处理文件以启动本地 Node 应用程序?
- python - 用 pandas dataFrame 中的值填充 python 字典
- java - Kafka Spring Batch Consumer - 提交单个偏移量
- html - Blazor WASM 模板 MainLayout.razor 的布局s 作为内联元素?
- javascript - Javascript在鼠标悬停时启动和重复功能并在鼠标离开时停止重复
- heroku - Heroku dyno 自动重启会终止我的应用程序上正在运行的处理吗?