【自学嵌入式:计算机组成原理】6. 二进制的运算
6. 二进制的运算
一、二进制数的位权计算与转换
二进制基于位值计数法,每个位置的数值由“符号本身”和“所在位的权值”共同决定。以下通过示例系统讲解计算逻辑。
1. 位权与8421编码
二进制位的权值遵循 ( 2^n ) 规律(( n ) 为从右往左的位置索引,从0开始计数)。对于4位二进制数,常用8421编码快速对应权值:
| 二进制位位置(从左到右) | 权值(( 2^n )) | 十进制对应值 |
|---|---|---|
| 最高位(第3位) | ( 2^3 = 8 ) | 8 |
| 左二位(第2位) | ( 2^2 = 4 ) | 4 |
| 左三位(第1位) | ( 2^1 = 2 ) | 2 |
| 最低位(第0位) | ( 2^0 = 1 ) | 1 |
2. 示例:二进制 1011 转十进制
对于二进制数 1011,按位提取符号与对应权值,通过位权展开法计算十进制值:
[
\begin{align}
\text{十进制值} &= (1 \times 2^3) + (0 \times 2^2) + (1 \times 2^1) + (1 \times 2^0) \
&= (1 \times 8) + (0 \times 4) + (1 \times 2) + (1 \times 1) \
&= 8 + 0 + 2 + 1 \
&= 11
\end{align}
]
3. 思考题:二进制 10110111 转十进制

步骤如下:
- 确定位权:8位二进制数的权值为 ( 2^7 ) 到 ( 2^0 )(对应十进制 128, 64, 32, 16, 8, 4, 2, 1);
- 提取符号:二进制数
10110111的各位符号为1 0 1 1 0 1 1 1; - 位权展开计算:
[
\begin{align}
\text{十进制值} &= (1 \times 128) + (0 \times 64) + (1 \times 32) + (1 \times 16) + (0 \times 8) + (1 \times 4) + (1 \times 2) + (1 \times 1) \
&= 128 + 0 + 32 + 16 + 0 + 4 + 2 + 1 \
&= 183
\end{align}
]
二、二进制的加法运算
二进制加法遵循“逢二进一”规则(与十进制“逢十进一”逻辑一致,仅进位条件不同)。以下通过示例详细说明运算流程。
1. 核心规则
- 本位相加:按位计算两个二进制数的对应位之和,结果可能为 ( 0, 1, 10_2 )(对应十进制 ( 0, 1, 2 ));
- 进位处理:若本位和为 ( 10_2 )(十进制2),则向高位进1,本位保留 ( 0 )。
2. 示例:二进制加法 ( 10110111_2 + 00010011_2 )
对应十进制验证:( 10110111_2 = 183_{10} ),( 00010011_2 = 19_{10} ),和为 ( 202_{10} )。
运算过程(从右往左逐位计算)
| 二进制位(权值) | 第7位(128) | 第6位(64) | 第5位(32) | 第4位(16) | 第3位(8) | 第2位(4) | 第1位(2) | 第0位(1) |
|---|---|---|---|---|---|---|---|---|
| 加数1(10110111) | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 1 |
| 加数2(00010011) | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 1 |
| 本位和(无进位) | ( 1+0=1 ) | ( 0+0=0 ) | ( 1+0=1 ) | ( 1+1=10 ) | ( 0+0=0 ) | ( 1+0=1 ) | ( 1+1=10 ) | ( 1+1=10 ) |
| 进位处理 | 无进位 | 无进位 | 无进位 | 向第5位进1 | 无进位 | 无进位 | 向第2位进1 | 向第1位进1 |
进位修正后的结果
- 第4位(16):和为 ( 10_2 ),向第5位进1,本位保留 ( 0 );
- 第1位(2):和为 ( 10_2 ),向第2位进1,本位保留 ( 0 );
- 第0位(1):和为 ( 10_2 ),向第1位进1,本位保留 ( 0 );
- 第5位(32):因第4位进位,原和 ( 1 ) 变为 ( 1+1=10_2 ),向第6位进1,本位保留 ( 0 );
- 第2位(4):因第1位进位,原和 ( 1 ) 变为 ( 1+1=10_2 ),向第3位进1,本位保留 ( 0 );
- 第6位(64):因第5位进位,原和 ( 0 ) 变为 ( 0+1=1 );
- 第3位(8):因第2位进位,原和 ( 0 ) 变为 ( 0+1=1 )。
最终二进制和为 ( 11001010_2 ),转换为十进制验证:
[
\begin{align}
1 \times 128 + 1 \times 64 + 0 \times 32 + 0 \times 16 + 1 \times 8 + 0 \times 4 + 1 \times 2 + 0 \times 1 &= 128 + 64 + 8 + 2 \
&= 202
\end{align}
]
总结:
- 二进制转换十进制的核心是位权展开法,需明确每位的 ( 2^n ) 权值;
- 二进制加法的关键是“逢二进一”规则,逐位计算并处理进位。
二者是理解计算机底层数据运算的基础,需熟练掌握。
浙公网安备 33010602011771号