上一篇中,通过XOR
和AND
,实现了一个1位的半加器。它的输入是2个管脚,代表要相加的2个二进制数字。如果输入的管脚再增加一个,代表进位,这样的加法器称之为全加器。
本位a = (XOR x y)
进位b = (AND x y)
上级进位 = z
本位a和上级进位c接入一个半加器,得到新的本位和进位:
本位a' = (XOR a z) = (XOR (XOR x y) z)
进位b' = (AND a z)
如果上级进位z为0,则进位b' = 0,和b做加法,进位(AND 0 b)一定是0,本位等于(XOR 0 b),b如果是1则为1,b如果是0则为0,与(OR 0 b)结果一致。因此,结果为(OR b' b)
如果上级进位z为1,则进位b' = a,和b做加法,进位(AND a b),如果为1说明a和b都为1,当b为1时,x y都为1,则其异或的结果a为0,综上所述,进位一定为0,本位是a和b做XOR,因为不存在a和b同时为1的可能,所以结果也可以化解为(OR a b),进而得到(OR b' b)
综上所述,进位位的进位恒为0不需要考虑,进位位的本位为(OR b' b)。
(OR (AND (XOR x y) z) (AND x y))
网友评论