进制转换

2025年3月17日 | 阅读 8 分钟

在我们上一节中,我们学习了不同类型的数制,如二进制、十进制、八进制和十六进制。在本教程的这一部分,我们将学习如何将一个数从一个数制转换为另一个数制。

由于我们有四种数制,因此每一种都可以转换为其余的三种系统。数制中有以下几种可能的转换:

  1. 二进制转其他数制。
  2. 十进制转其他数制。
  3. 八进制转其他数制。
  4. 十六进制转其他数制。
Number Base Conversion

二进制转其他数制

二进制数有三种可能的转换,即二进制转十进制、二进制转八进制和二进制转十六进制。二进制数转换为十进制的过程与其他转换不同。让我们详细讨论二进制数制转换。

二进制转十进制

将二进制转换为十进制的过程非常简单。该过程首先将二进制数的各位与其对应的位权相乘,最后将所有这些乘积相加。

让我们举一个例子来理解二进制到十进制的转换是如何完成的。

示例 1: (10110.001)2

我们将 (10110.001)2 的各位与其各自的位权相乘,最后将所有各位与其位权相乘的结果相加。

(10110.001)2=(1×24)+(0×23)+(1×22)+(1×21)+(0×20)+
              (0×2-1)+(0×2-2)+(1×2-3)
(10110.001)2=(1×16)+(0×8)+(1×4)+(1×2)+(0×1)+
              (0×1⁄2)+(0×1⁄4)+(1×1⁄8)
(10110.001)2=16+0+4+2+0+0+0+0.125
(10110.001)2=(22.125 )10

二进制转八进制

二进制和八进制的基数分别是 2 和 8。在二进制数中,三位一组等于一个八进制数字。将二进制数转换为八进制数只有两个步骤,如下所示:

  1. 第一步,我们在二进制小数点两侧每三位分组。如果三位一组还剩一两位,则在最左边(或最右边)添加所需数量的零。
  2. 第二步,我们写出与每组对应的八进制数字。

示例 1: (111110101011.0011)2

1. 首先,我们在二进制小数点两侧进行三位分组。

111       110       101       011.001       1

在二进制小数点右侧,最后一组只有一个数字。为了使其成为一个完整的三个数字组,我们在最右边添加了两个零。

111       110       101       011.001       100

2. 然后,我们写出与每组对应的八进制数字。

(111110101011.0011)2=(7653.14)8

二进制转十六进制

二进制和十六进制的基数分别是 2 和 16。在二进制数中,四位一组等于一个十六进制数字。将二进制数转换为十六进制数也只有两个步骤,如下所示:

  1. 第一步,我们在二进制小数点两侧每四位分组。如果四位一组还剩一、二或三位,则在最左边(或最右边)添加所需数量的零。
  2. 第二步,我们写出与每组对应的十六进制数字。

示例 1: (10110101011.0011)2

1. 首先,我们在二进制小数点两侧进行四位分组。

111 1010 1011.0011

在二进制小数点左侧,第一组有三位。为了使其成为一个完整的四位组,我们在最左边添加了一个零。

0111 1010 1011.0011

2. 然后,我们写出与每组对应的十六进制数字。

(011110101011.0011)2=(7AB.3)16

十进制转其他数制

十进制数可以是整数或浮点整数。当十进制数为浮点整数时,我们将十进制数的整数部分和小数部分分别单独转换。将十进制数转换为任何基数“r”的相应数字所使用的步骤如下:

  1. 第一步,我们对整数部分和连续的商执行除以基数“r”的运算。我们将列出所有余数,直到商为零。然后,我们将余数按相反的顺序排列,以获得基数“r”的相应数字的整数部分。其中,最低有效位和最高有效位分别由第一个和最后一个余数表示。
  2. 下一步,我们对小数部分和连续的小数执行乘以基数“r”的运算。直到结果为零或获得所需数量的相应数字为止,我们记下进位。为了获得基数“r”的相应数字的小数部分,我们按正常顺序考虑进位。

十进制转二进制

将十进制转换为二进制需要两个步骤,如下所示:

  1. 第一步,我们对整数和连续的商执行除以二进制基数(2)的运算。
  2. 接下来,我们对整数和连续的商执行乘以二进制基数(2)的运算。

示例 1: (152.25)10

步骤 1

将数字 152 及其连续的商除以基数 2。

操作余数
152/2760 (最低有效位)
76/2380
38/2190
19/291
9/241
4/220
2/210
1/201 (最高有效位)

(152)10=(10011000)2

步骤 2

现在,对 0.27 及其连续的小数执行乘以基数 2 的运算。

操作结果进位
0.25×20.500
0.50×201

(0.25)10=(.01)2

十进制转八进制

将十进制转换为八进制需要两个步骤,如下所示:

  1. 第一步,我们对整数和连续的商执行除以八进制基数(8)的运算。
  2. 接下来,我们对整数和连续的商执行乘以八进制基数(8)的运算。

示例 1: (152.25)10

步骤 1

将数字 152 及其连续的商除以基数 8。

操作余数
152/8190
19/823
2/802

(152)10=(230)8

步骤 2

现在,对 0.25 及其连续的小数执行乘以基数 8 的运算。

操作结果进位
0.25×802

(0.25)10=(2)8

因此,十进制数 152.25 的八进制数是 **230.2**

十进制转十六进制

将十进制转换为十六进制需要两个步骤,如下所示:

  1. 第一步,我们对整数和连续的商执行除以十六进制基数(16)的运算。
  2. 接下来,我们对整数和连续的商执行乘以十六进制基数(16)的运算。

示例 1: (152.25)10

步骤 1

将数字 152 及其连续的商除以基数 8。

操作余数
152/1698
9/1609

(152)10=(98)16

步骤 2

现在,对 0.25 及其连续的小数执行乘以基数 16 的运算。

操作结果进位
0.25×1604

(0.25)10=(4)16

因此,十进制数 152.25 的十六进制数是 **230.4**

八进制转其他数制

与二进制和十进制一样,八进制数也可以转换为其他数制。八进制转十进制的过程与其他转换不同。让我们开始理解转换是如何进行的。

八进制转十进制

八进制转十进制的过程与二进制转十进制相同。该过程首先将八进制数的各位与其对应的位权相乘,最后将所有这些乘积相加。

让我们举一个例子来理解八进制到十进制的转换是如何完成的。

示例 1: (152.25)8

步骤 1

我们将 152.25 的各位与其各自的位权相乘,最后将所有各位与其位权相乘的结果相加。

(152.25)8=(1×82)+(5×81)+(2×80)+(2×8-1)+(5×8-2)
(152.25)8=64+40+2+(2×1⁄8)+(5×1⁄64)
(152.25)8=64+40+2+0.25+0.078125
(152.25)8=106.328125

因此,八进制数 152.25 的十进制数是 **106.328125**

八进制转二进制

八进制转二进制的过程是二进制转八进制的逆过程。我们将每个八进制数字写成三位二进制代码。

示例 1: (152.25)8

我们写出 1、5、2 和 5 的三位二进制数字。

(152.25)8=(001101010.010101)2

因此,八进制数 152.25 的二进制数是 **(001101010.010101)2**

八进制转十六进制

将八进制转换为十六进制需要两个步骤,如下所示:

  1. 第一步,我们将找到数字 **25** 的二进制等价物。
  2. 接下来,我们必须在二进制小数点两侧进行四位分组。如果四位一组还剩一、二或三位,则在最左边(或最右边)添加所需数量的零,并写出与每组对应的十六进制数字。

示例 1: (152.25)8

步骤 1

我们写出 1、5、2 和 5 的三位二进制数字。

(152.25)8=(001101010.010101)2

因此,八进制数 152.25 的二进制数是 **(001101010.010101)2**

步骤 2

1. 现在,我们在二进制小数点两侧进行四位分组。

0       0110       1010.0101       01

在二进制小数点左侧,第一组只有一个数字,在右侧,最后一组只有两个数字。为了使其成为完整的四位组,我们在最左边和最右边添加了零。

0000       0110       1010.0101       0100

2. 现在,我们写出与每组对应的十六进制数字。

(0000       0110       1010.0101       0100)2=(6A.54)16

十六进制转其他数制

与二进制、十进制和八进制一样,十六进制数也可以转换为其他数制。十六进制转十进制的过程与其他转换不同。让我们开始理解转换是如何进行的。

十六进制转十进制

十六进制转十进制的过程与二进制转十进制相同。该过程首先将十六进制数的各位与其对应的位权相乘,最后将所有这些乘积相加。 

让我们举一个例子来理解十六进制到十进制的转换是如何完成的。

示例 1: (152A.25)16

步骤 1

我们将 152A.25 的各位与其各自的位权相乘,最后将所有各位与其位权相乘的结果相加。

(152A.25)16=(1×163)+(5×162)+(2×161)+(A×160)+(2×16-1)+(5×16-2)
(152A.25)16=(1×4096)+(5×256)+(2×16)+(10×1)+(2×16-1)+(5×16-2)
(152A.25)16=4096+1280+32+10+(2×1⁄16)+(5×1⁄256)
(152A.25)16=5418+0.125+0.125
(152A.25)16=5418.14453125

因此,十六进制数 152A.25 的十进制数是 **5418.14453125**

十六进制转二进制

十六进制转二进制的过程是二进制转十六进制的逆过程。我们将每个十六进制数字写成四位二进制代码。

示例 1: (152A.25)16

我们写出 1、5、A、2 和 5 的四位二进制数字。

(152A.25)16=(0001 0101 0010 1010.0010 0101)2

因此,十六进制数 152.25 的二进制数是 **(1010100101010.00100101)2**

十六进制转八进制

将十六进制转换为八进制需要两个步骤,如下所示:

  1. 第一步,我们将找到十六进制数的二进制等价物。
  2. 接下来,我们必须在二进制小数点两侧进行三位分组。如果三位一组还剩一两位,则在最左边(或最右边)添加所需数量的零,并写出与每组对应的八进制数字。

示例 1: (152A.25)16

步骤 1

我们写出 1、5、2、A 和 5 的四位二进制数字。

(152A.25)16=(0001 0101 0010 1010.0010 0101)2

因此,十六进制数 152A.25 的二进制数是 **(0011010101010.010101)2**

步骤 2

3. 然后,我们在二进制小数点两侧进行三位分组。

001     010     100     101     010.001     001     010

4. 然后,我们写出与每组对应的八进制数字。

(001010100101010.001001010)2=(12452.112)8

因此,十六进制数 152A.25 的八进制数是 **12452.112**


下一主题Gray 码