作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 python 中实现了一个 8 位加法器,如下所示:
from gates import AND, OR, XOR
from utils import number_to_binary, binary_to_number
def EightBitAdder(s1='110101', s2='00010', carry_in=0):
# Limit to 8 bits
s1 = s1[-8:].zfill(8)
s2 = s2[-8:].zfill(8)
s_out = ''
carry_out = None
for i in range(8):
bit_1 = int(s1[8-1-i])
bit_2 = int(s2[8-1-i])
carry_in = carry_out if (carry_out is not None) else carry_in
value_out = XOR(carry_in, XOR(bit_1, bit_2))
carry_out = OR(AND(bit_1, bit_2), AND(bit_1, carry_in), AND(bit_2, carry_in))
s_out = str(int(value_out)) + s_out
print (" %s (%s) \n+ %s (%s) \n= %s (%s) -- Carry %s" % (s1, binary_to_number(s1), s2, binary_to_number(s2), s_out, binary_to_number(s_out), int(carry_in)))
return (s_out, int(carry_out))
int()
,而且似乎 8 位加法器中有大量的门。例如:
最佳答案
在真正的加法器中,门连接成一个图形,其中一个门的输出可以用作其他几个门的输入。
您将输出编写为表达式,其中门的输出只能在一个地方使用。
这是通过将每个输出的整个表达式复制到所有使用它的地方来实现的。您在每次迭代中都这样做 -- carry_in
使用一次以产生值,使用 3 次以产生下一个进位。
进位表达式的大小在每次迭代中都乘以 3,从而导致您使用的运算符数量呈指数级增长。
您可能应该以可以保留门图的不同形式生成输出,例如静态单一分配:https://en.wikipedia.org/wiki/Static_single_assignment_form
关于python - 在python中实现8位加法器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60837888/
我想知道是否可以编写函数 add :: Maybe Int -> Maybe Int add Just x = Just (x+1) add Nothing = Nothing 没有 x。类似于 f
我想知道是否可以编写函数 add :: Maybe Int -> Maybe Int add Just x = Just (x+1) add Nothing = Nothing 没有 x。类似于 f
我正在尝试用 Verilog 编写 BCD 加法器,但其中一个模块遇到问题。具体来说,加法器将两个 BCD 数字相加。所以,如果两位数之和小于或等于九,那么它就是正确的。但是,如果它更大,则必须添加
我是一名优秀的程序员,十分优秀!