在这里不分析半加器和全加器的实现方式,主要是以十进制为例,搞明白半加器和全加器的原理和输入输出端口代表的意义。
(以十进制的15+17举例,我们先回到学习十以外加减法的小学时代,需要列出加法竖式,先计算个位,判断有无进位,再计算十位,加上进位之后才能得到结果)
半加器:
计算15+17时,分开计算个位与十位,下面使用半加器计算个位相加和十位相加,个位相加时虽然输出了进位信号,但如果十位使用的也是半加器(没有进位信号的输入端口),半加器无法接收来自个位相加时提供的进位信号,输出结果会是22。
输入 输出
半加器(个位) in1(5) sum(2)
in2(7) cout(1)
输入 输出
半加器 (十位) in1(1) sum(2)
in2(1) cout(0)
由上表中可知,最终输出是22,结果错误。
全加器:
下面使用全加器计算个位相加和十位相加,个位相加时产生的进位信号可以输出给十位的全加器,输出结果正确,是32。
输入 输出
全加器 (个位) in1(5) sum(2)
in2(7) cout(1)
cin(0)
输入 输出
全加器 (十位) in1(1) sum(3)
in2(1) cout(0)
cin(1)
由上表中可知,最终输出是32,结果正确。