1 条题解
-
0
题目重述
我们需要使用谢费尔竖线(NAND)运算来构造一个逻辑表达式,计算两个N位二进制数相加时的溢出位。谢费尔竖线的定义为:x|y = NOT (x AND y)。
解题思路
理解溢出位的产生:
在二进制加法中,溢出位(最高位的进位)产生于最高位的相加和来自低位的进位。
例如,对于2位数相加,溢出位 = A1 AND B1 OR (A1 XOR B1) AND C0,其中C0是低位的进位。
用NAND表示基本逻辑门:
NOT x = x|x
x AND y = (x|y)|(x|y)
x OR y = (x|x)|(y|y)
构造进位逻辑:
对于第i位,进位C_i = (A_i AND B_i) OR ((A_i XOR B_i) AND C_{i-1})
需要用NAND运算表示这个逻辑。
递归构造表达式:
从最低位开始,逐步计算每一位的进位。
最终溢出位就是最高位的进位。
- 1
信息
- ID
- 748
- 时间
- 1000ms
- 内存
- 10MiB
- 难度
- 10
- 标签
- 递交数
- 4
- 已通过
- 0
- 上传者