二进制与加法

半加器和全加器有什么区别:进位输入讲清楚

半加器只加两个一位输入 A 和 B。全加器多了一个进位输入 Cin,能把右边一列送来的进位一起加上。正因为多了这一个输入,全加器才能一列接一列地做多位加法。

两者的输入和输出

半加器有两个输入 A、B,两个输出:和 S 等于 A XOR B,进位 C 等于 A AND B。把 C 和 S 并排写成 CS,就是这次相加的两位二进制结果。

全加器有三个输入 A、B、Cin,两个输出:S 等于 A+B+Cin 除以 2 的余数,Cout 等于 A+B+Cin 除以 2 再向下取整。Cin=1 时,本列多算一份本列的位值;Cin=0 时不多算。它只影响这一列,不是给整道题固定加上十进制的 1。

半加器真值表

四行列出 A、B 的全部组合。

半加器:输入 A、B,输出进位 C 和和 S
ABCS
0000
0101
1001
1110

全加器真值表

八行按 A、B、Cin 的组合依次排列。每一行的三个数字是三个独立输入各自的取值,比如 111 表示 A=1、B=1、Cin=1。不要把这组输入当作一个三位二进制数来读;如果真把 111 当成一个二进制数,它会是十进制 7,和这里的意思无关。

全加器:输入 A、B、Cin,输出 S 和 Cout
ABCinSCout
00000
00110
01010
01101
10010
10101
11001
11111

两台半加器先后相加

全加器可以理解为分两步:第一台半加器先算 A+B,得到一个和与一个进位;第二台半加器再把第一步的和与 Cin 相加,得到最终的 S。两步各自可能产生的进位合并起来,就是 Cout,两者不会同时为 1。

注意第一台已经产生的 2 点进位不会再送进第二台的 1 点输入,它直接去合并成 Cout。课程里是用加法盒子分两次相加来体验这个过程,不需要亲手接线或单独搭建 OR 门。

半加器

输入

A = 1B = 1

输出

和 S = 0进位 C = 1

1 + 1 = 10₂ = 2

全加器

输入

A = 1B = 1Cin = 1

输出

和 S = 1进位输出 Cout = 1

1 + 1 + 1 = 11₂ = 3

左边是半加器,A=1、B=1 时 S=0、C=1,结果 10₂。右边是全加器,A=1、B=1、Cin=1 时三份相加等于 3,S=1、Cout=1,结果 11₂。

自我检查

  1. 半加器和全加器最关键的区别是什么?

    答案

    全加器多一个进位输入 Cin,能把右边一列送来的进位一起加上;半加器只加 A 和 B。

  2. 全加器输入 A=1、B=0、Cin=1,输出是什么?

    答案

    1+0+1 等于 2,所以 S=0、Cout=1。

  3. 全加器真值表里的 110 是什么意思?

    答案

    表示 A=1、B=1、Cin=0 这一组输入,不是二进制数 110。此时 S=0、Cout=1。