2025-11-08 06:42:59
先来说说咋整这个全加器。全加器要算三个数的加法,得处理进位。用异或门和与非门的话,和数S可以直接用异或门连着三个输入A、B、进位C_in,像这样A异或B异或C_in。进位输出C_out就得搞点复杂点的东西,先算A与B,A与C_in,B与C_in这三个组合,然后用与非门再把这些结果串起来。具体来说,先拿与非门算A和B的非,再拿与非门算A和C_in的非,再拿与非门算B和C_in的非,这三个非的结果再拿与非门一串,这样出来的就是进位输出C_out了。
为啥得这么整呢?因为全加器的进位逻辑本来是(A与B)或(A与C_in)或(B与C_in),但直接用或门不行,题目限定只能用与非门。这时候就得用德摩根定律来转换。原式可以写成((A与B)非)与((A与C_in)非)与((B与C_in)非)的非,也就是三个与非门先算出每个乘积的非,再拿这三个非的结果再与非一次。这样刚好符合与非门的特性。比如当A=1、B=1、C_in=0时,A与B的非是0,A与C_in的非是1,B与C_in的非是1,这三个非的结果是0、1、1,再与非一次就是0的非也就是1,正好对应进位输出应为1的情况。和数S的异或门部分同理,三个数直接异或就得出结果,比如1异或1异或0就是0,符合全加器真值表里的值。整个过程总共用了四个异或门和四个与非门,比传统方案更省料。
本题链接: