我正在使用数字逻辑类,我正在尝试将这个二进制数乘以。我不确定是什么东西和胡萝卜。老师的幻灯片是可怕的。似乎他使用了一个真值表来做到这一点,但令人困惑。
X1X0
+ Y1Y0
----
Z2Z1Z0
我认为这就是它的设置!现在,对于乘法部分
1 carry in?
110101
X 1101
------
101011001 thats what i ended up with. Probobly, not right!
我认为我的真相表应该是这样的:请记住,这不是我上面的答案所设定的
X1X0
+ Y1Y0
----
Z2Z1Z0
X0 Y0 Carry Z0
0 0 0 0
1 0 0 1
0 1 0 1
1 1 1 0
X1 Y1 Carryin Carryout Z1
0 0 0 0 0
1 0 0 0 1
0 1 0 0 1
1 1 0 1 0
0 0 1 0 1
1 0 1 1 0
我对x1和y1部分感到困惑 如果我能够在行动中看到它并且标记“进入”是什么并且“实施”是在其成倍增加的情况下会更容易。
“进位”是1 + 1的结果而“执行”是下一次进位结果的结果吗?
我认为在我们通过进位完成真值表并执行之后 我们将使用布尔代数,如:
Z1 = X1• Y1' • Carryin' + X1' • Y1• Carryin' + X1' • Y1' • Carryin + X1• Y1• Carryin
Carryout = X1• Y1• Carryin' + X1 • Y1' • Carryin + X1' • Y1• Carryin + X1 • Y1• Carryin
Z2 = Carryout
我们要“仅使用NAND运算符来计算AND,OR和NOT函数的等式。”不知道怎么做!
答案 0 :(得分:1)
NAND
只是AND
操作,后跟NOT
。
仅使用NAND
实现其他布尔运算:
NOT a = a NAND a
a | (a NAND a) | result
--+------------+-------
0 | 1 | OKAY
1 | 0 | OKAY
a AND b = NOT (NOT (a AND b))
= NOT (a NAND b)
= (a NAND b) NAND (a NAND b)
a | b | x=(a NAND b) | (x NAND x) | result
--+---+--------------+------------+-------
0 | 0 | 1 | 0 | OKAY
0 | 1 | 1 | 0 | OKAY
1 | 0 | 1 | 0 | OKAY
1 | 1 | 0 | 1 | OKAY
a OR b = NOT((NOT a) AND (NOT b)) # DeMorgans Law
= NOT((a NAND a) AND (b NAND b))
= NOT(NOT ((a NAND a) NAND (b NAND b)))
= (a NAND a) NAND (b NAND b)
a | b | x=(a NAND a) | y = (b NAND b) | (x NAND y) | result
--+---+--------------+----------------+------------+-------
0 | 0 | 1 | 1 | 0 | OKAY
0 | 1 | 1 | 0 | 1 | OKAY
1 | 0 | 0 | 1 | 1 | OKAY
1 | 1 | 0 | 0 | 1 | OKAY