数字电路 - 进制转换
在上一章中,我们了解了四种主要的数制。在本章中,我们将数字从一个数制转换为另一个数制,以找到等效值。
十进制数与其他进制数的转换
如果十进制数包含整数部分和小数部分,则将十进制数的两个部分分别转换为其他进制数。按照以下步骤将十进制数转换为任何进制"r"的等效数。
对十进制数的整数部分和以"r"为进制的连续商进行除法,并记下余数,直到商为零。以相反的顺序考虑余数,以获得以"r"为进制的等效数的整数部分。这意味着,第一个余数和最后一个余数分别表示最低有效数字和最高有效数字。
将小数的小数部分和连续小数与基数"r"相乘,并记下进位,直到结果为零或获得所需的等效数字。考虑正常的进位顺序,以获得相当于基数"r"的小数部分。
十进制到二进制的转换
将十进制数转换为其等效二进制数时,会发生以下两种类型的操作。
- 以 2 为底,对整数部分和连续商进行除法。
- 以 2 为底,对小数部分和连续小数进行乘法。
示例
考虑十进制数 58.25。这里,整数部分为 58,小数部分为 0.25。
步骤 1 − 58 的除法和以 2 为底的连续商。
运算 | 商 | 余数 |
---|---|---|
58/2 | 29 | 0 (LSB) |
29/2 | 14 | 1 |
14/2 | 7 | 0 |
7/2 | 3 | 1 |
3/2 | 1 | 1 |
1/2 | 0 | 1(MSB) |
⇒(58)10 = (111010)2
因此,等效二进制数的整数部分为111010。
步骤2 − 将0.25与以2为底的连续小数相乘。
运算 | 结果 | 进位 |
---|---|---|
0.25 x 2 | 0.5 | 0 |
0.5 x 2 | 1.0 | 1 |
- | 0.0 | - |
⇒(.25)10 = (.01)2
因此,等效二进制数的小数部分为.01
⇒(58.25)10 = (111010.01)2
因此,十进制数 58.25 的二进制等值为 111010.01。
十进制到八进制的转换
将十进制数转换为其等效八进制数时,会发生以下两种类型的运算。
整数部分除法和以底数连续取商8.
小数部分与以 8 为底的连续小数相乘。
示例
考虑十进制数 58.25。这里,整数部分为 58,小数部分为 0.25。
步骤 1 − 58 的除法和以 8 为底的连续商。
运算 | 商 | 余数 |
---|---|---|
58/8 | 7 | 2 |
7/8 | 0 | 7 |
⇒(58)10 = (72)8
因此,等效八进制数的整数部分为72。
步骤 2 − 将 0.25 与以 8 为底的连续小数相乘。
Operation | Result | Carry |
---|---|---|
0.25 x 8 | 2.00 | 2 |
- | 0.00 | - |
⇒ (.25)10 = (.2)8
因此,等效八进制数的小数部分为 .2
⇒ (58.25)10 = (72.2)8
因此,十进制数 58.25 的八进制等值是 72.2。
十进制到十六进制的转换
将十进制数转换为其等价的十六进制数时,会发生以下两种类型的运算。
- 以 16 为底数,对整数部分和连续商进行除法运算。
- 以 16 为底数,对小数部分和连续小数进行乘法运算。
示例
考虑十进制数 58.25。这里整数部分是58,小数部分是0.25。
步骤1 − 除以58,然后以16为底数逐一计算商。
运算 | 商 | 余数 |
---|---|---|
58/16 | 3 | 10=A |
3/16 | 0 | 3 |
⇒ (58)10 = (3A)16
因此,等效十六进制数的整数部分为3A。
步骤2 −将 0.25 与以 16 为底的连续小数相乘。
运算 | 结果 | 进位 |
---|---|---|
0.25 x 16 | 4.00 | 4 |
- | 0.00 | - |
⇒(.25)10 = (.4)16
因此,等效十六进制数的小数部分为 .4。
⇒(58.25)10 = (3A.4)16
因此,十进制数 58.25 的十六进制等值为 3A.4。
二进制数与其他进制数的转换
将数字从二进制转换为十进制的过程与将二进制数转换为其他进制的过程不同。现在,让我们逐一讨论二进制数转换为十进制、八进制和十六进制数系统。
二进制到十进制的转换
要将二进制数转换为其等效的十进制数,首先将二进制数的位与相应的位置权重相乘,然后将所有这些乘积相加。
示例
考虑二进制数 1101.11。
从数学上讲,我们可以将其写成
(1101.11)2 = (1 × 23) + (1 × 22) + (0 × 21) + (1 × 20) + (1 × 2-1) +
(1 × 2-2)
⇒ (1101.11)2 = 8 + 4 + 0 + 1 + 0.5 + 0.25 = 13.75
⇒ (1101.11)2 = (13.75)10
因此,二进制数 1101.11 的十进制等值为 13.75。
二进制到八进制的转换
我们知道二进制和八进制数系统的基数分别是 2 和 8。三位二进制数相当于一位八进制数,因为 23 = 8。
请按照以下两个步骤将二进制数转换为其等效的八进制数。
从二进制小数点开始,在二进制小数点两侧组成 3 位组。如果在组成 3 位组时少了一位或两位,则在两端包含所需数量的零。
写出与每组 3 位相对应的八进制数字。
示例
考虑二进制数 101110.01101。
步骤 1 −在二进制小数点的两边各组成 3 位组。
101 110.011 01
这里,在二进制小数点的右侧,最后一组只有 2 位。因此,在最远端添加一个零,以使其成为 3 位组。
⇒ 101 110.011 010
步骤 2 − 写出每组 3 位对应的八进制数字。
⇒ (101 110.011 010)2 = (56.32)8
因此,二进制数 101110.01101 的八进制等值为 56.32。
二进制到十六进制的转换
我们知道二进制和十六进制数系统的基数分别是 2 和 16。四位二进制数相当于一位十六进制数,因为 24 = 16。
请按照这两个步骤将二进制数转换为其等效的十六进制数。
从二进制小数点开始,在二进制小数点的两边各组成 4 位组。如果在组成 4 位组时某些位较少,则在最末端包含所需数量的零。
写出与每组 4 位对应的十六进制数字。
示例
考虑二进制数 101110.01101
步骤 1 − 在二进制小数点的两边组成 4 位组。
10 1110.0110 1
这里,第一组只有 2 位。因此,在最末端包含两个零,以使其成为 4 位组。类似地,在最末端添加三个零,使最后一组也是4位组。
⇒ 0010 1110.0110 1000
步骤2 − 写出每组4位对应的十六进制数字。
⇒ (0010 1110.0110 1000)2 = (2E.68)16
因此,二进制数 101110.01101 的十六进制等值是 (2E.68)。
八进制数与其他进制数的转换
将数字从八进制转换为十进制的过程与将八进制数转换为其他进制的过程不同。现在,让我们逐一讨论将八进制数转换为十进制、二进制和十六进制数系统。
八进制到十进制的转换
要将八进制数转换为其等效的十进制数,首先将八进制数的数字与相应的位置权重相乘,然后将所有这些乘积相加。
示例
考虑八进制数 145.23。
从数学上讲,我们可以将其写成
(145.23)8 = (1 × 82) + (4 × 81) + (5 × 80) + (2 × 8-1) + (3 × 8-2)
⇒ (145.23)8 = 64 + 32 + 5 + 0.25 + 0.05 = 101.3
⇒ (145.23)8 = (101.3)10
因此,八进制数 145.23 的十进制等值为 101.3。
八进制到二进制的转换
将八进制数转换为等效二进制数的过程与二进制到八进制的转换过程正好相反。通过用 3 位表示每个八进制数字,我们将得到等效的二进制数。
示例
考虑八进制数 145.23。
用 3 位表示每个八进制数字。
(145.23)8 = (001 100 101.010 011)2
删除最极端的零不会改变值。
⇒ (145.23)8 = (1100101.010011)2
因此,八进制数 145.23 的二进制等价数为 1100101.010011。
八进制到十六进制的转换
按照这两个步骤将八进制数转换为其等价的十六进制数。
- 将八进制数转换为其等价的二进制数。
- 将上述二进制数转换为其等价的十六进制数。
示例
考虑八进制数 145.23
在前面的例子中,我们得到了二进制八进制数 145.23 的等价数为 1100101.010011。
按照二进制到十六进制的转换过程,我们将得到
(1100101.010011)2 = (65.4C)16
⇒(145.23)8 = (65.4C)16
因此,八进制数 145.23 的 十六进制等价数 为 65.4C。
十六进制数与其他进制数的转换
将数字从十六进制转换为十进制与十六进制数转换成其他进制数的过程不同,下面我们来逐一讨论十六进制数转换成十进制、二进制、八进制的过程。
十六进制到十进制的转换
要将十六进制数转换为其等效的十进制数,首先将十六进制数的数字与相应的位置权重相乘,然后将所有这些乘积相加。
示例
考虑十六进制数 1A5.2
从数学上讲,我们可以将其写成
(1A5.2)16 = (1 × 162) + (10 × 161) + (5 × 160) + (2 × 16-1)
⇒ (1A5.2)16 = 256 + 160 + 5 + 0.125 = 421.125
⇒ (1A5.2)16 = (421.125)10
因此,十六进制数 1A5.2 的十进制等值为 421.125。
十六进制到二进制的转换
将十六进制数转换为其等价的二进制数的过程与二进制到十六进制的转换过程正好相反。通过用 4 位表示每个十六进制数字,我们将得到等效的二进制数。
示例
考虑十六进制数 65.4C
用 4 位表示每个十六进制数字。
(65.4C)6 = (0110 0101.0100 1100)2
删除两个极端的零不会改变值。
⇒ (65.4C)16 = (1100101.010011)2
因此,十六进制数 65.4C 的二进制等值为 1100101.010011。
十六进制到八进制的转换
请按照以下两个步骤将十六进制数转换为其等值的八进制数。
- 将十六进制数转换为其等值的二进制数。
- 将上述二进制数转换为其等值的八进制数。
示例
考虑十六进制数 65.4C
在前面的例子中,我们得到了十六进制数 65.4C 的二进制等价数 1100101.010011。
按照二进制到八进制的转换过程,我们将得到
(1100101.010011)2 = (145.23)8
⇒(65.4C)16 = (145.23)𝟖
因此,十六进制数的八进制等价数 65.4C 为 145.23。