二进制与加法
二进制加法和进位:为什么 1+1=10
二进制每一位只能写 0 或 1。1 加 1 得到 2,一位放不下,所以本位写 0,再向左边高一位送出一个 1,写成 10₂。这个送出去的 1 就是进位。
四条基本规则
一位加一位只有四种情况。和表示本位留下的数字,进位表示要送往高一位的数字。
| 算式 | 和 | 进位 | 二进制结果 |
|---|---|---|---|
| 0+0 | 0 | 0 | 0₂ |
| 0+1 | 1 | 0 | 1₂ |
| 1+0 | 1 | 0 | 1₂ |
| 1+1 | 0 | 1 | 10₂ |
1+1+1 等于 11₂
多位相加时,某一列除了两个数字,还可能收到右边送来的进位,这时一列里有三个 1 相加。
1+1+1 等于 3。3 在二进制里写作 11₂:本位留下 1,再向高一位送出 1。
逐列计算 3+1
算 0011₂ + 0001₂,也就是 3+1。从最右边的一列开始,每列先写本列结果,再把进位交给左边一列。
- 第一列(1 位):1+1,本列写 0,向第二列送进位 1。
- 第二列(2 位):1+0 再加进位 1,等于 2,本列写 0,向第三列送进位 1。
- 第三列(4 位):0+0 再加进位 1,本列写 1,不再进位。
- 第四列(8 位):0+0,本列写 0。
- 结果是 0100₂,也就是 4,和 3+1 一致。
0011₂ + 0001₂ = 0100₂
| 位值 | 8 | 4 | 2 | 1 |
|---|---|---|---|---|
| A | 0 | 0 | 1 | 1 |
| B | 0 | 0 | 0 | 1 |
| 进位输入 Cin | 0 | 1 | 1 | 0 |
| 和 S | 0 | 1 | 0 | 0 |
| 进位输出 Cout | 0 | 0 | 1 | 1 |
进位: 8 ← 4 ← 2 ← 1
别把二进制结果读成十进制
1+1=10₂ 里的 10 读作“一零”,表示一个 2 加零个 1,也就是十进制的 2,不是十。
写题目时加上下标 ₂,或者写明“二进制”,就不容易和十进制混在一起。
自我检查
1₂ + 1₂ 的结果 10₂ 是十进制的几?
答案
是 2。左边的 1 在 2 位上,右边的 0 在 1 位上,2+0 等于 2,不是十。
某一列是 1+1,又收到进位 1,本列写几,要不要进位?
答案
1+1+1 等于 3,二进制是 11₂,所以本列写 1,并向高一位进位 1。
算 0010₂ + 0010₂。
答案
第一列 0+0 写 0;第二列 1+1 写 0 进 1;第三列 0+0+1 写 1;第四列写 0。结果 0100₂,十进制 2+2=4。