二进制、八进制和十六进制数的转换

二进制、八进制和十六进制数的转换


2024年5月9日发(作者:)

我们曾经指出为了便于二进制数和十进制数的转换,也为了在书

写时更加简便易读,二进制数经常要转换成8进制数和16进制数。

这里我们考查2进制数和8进制数之间的转换关系。

设有一个9位二进制数(k

8

k

7

k

6

k

5

k

4

k

3

k

2

k

1

k

0

2

,根据数制的定

义,我们知道:

(k

8

k

7

k

6

k

5

k

4

k

3

k

2

k

1

k

0

2

=k

8

×2

8

+k

7

×2

7

+k

6

×2

6

+k

5

×2

5

+k

4

×2

4

k

3

×2

3

+k

2

×2

2

+k

1

×2

1

+k

0

×2

0

(式2-16)

式2-16可以进一步写成:

k

8

×2

8

+k

7

×2

7

+k

6

×2

6

+k

5

×2

5

+k

4

×2

4

+k

3

×2

3

+k

2

×2

2

+k

1

×2

1

k

0

×2

0

=(k

8

×2

2

+k

7

×2

1

+k

6

×2

0

)×2

6

+(k

5

×2

2

+k

4

×2

1

+k

3

×2

0

)×2

3

+k

2

×2

2

+k

1

×2

1

+k

0

×2

0

=(k

8

×2

2

+k

7

×2

1

+k

6

×2

0

)×8

2

+(k

5

×2

2

+k

4

×2

1

+k

3

×2

0

)×8

1

+(k

2

×2

2

+k

1

×2

1

+k

0

×2

0

)×8

0

(式2-17)

上面的式子中,k

8

×2

2

+k

7

×2

1

+k

6

×2

0

相当于(k

8

k

7

k

6

)

2

,假定

其等于十进制数h

2

;k

5

×2

2

+k

4

×2

1

+k

3

×2

0

相当于(k

5

k

4

k

3

)

2

,假定

其等于十进制数h

1

;k

2

×2

2

+k

1

×2

1

+k

0

×2

0

相当于(k

2

k

1

k

0

)

2

,假定

其等于十进制数h

0

。则式2-17可以改写为:

h

2

×8

2

+h

1

×8

1

+h

0

×8

0

(式2-18)

由于h

2

、h

1

、 h

0

是三位二进制数的值,因此,其值的范围在0~

7之间。根据数制的定义,我们惊奇地发现式2-18相当于(h

2

h

1

h

0

8

。这就是说:

(k

8

k

7

k

6

k

5

k

4

k

3

k

2

k

1

k

0

2

=(h

2

h

1

h

0

8

(式2-19)

这里,h

2

=(k

8

k

7

k

6

)

2

;h

1

=(k

5

k

4

k

3

)

2

;h

0

=(k

2

k

1

k

0

)

2

这就是说,我们只要把一个九位的二进数从低位开始三位一组,

分成三组,将这三组二进制数分别转换成10进制数,所得的三个数

就是该二进制数所对应的8进制数的码。这种关系可以一直往高位推

导,即不管二进制数有多少位我们都可以用这种方法把它转换成一个

8进制数。

例2-6:将二进制数(1)

2

转换为8进制数。

解:将二进制数三位一组分组,计算每组的值如下:

1 0 1 1 1 0 0 1 0 1 0

2 7 1 2

则:(1)

2

=(2712)

8

需要注意的是,整数的分组是从最低位开始,向最高位延伸。如

果最高位的组不足三位,则在前面补0。另外,这种转换同样适用于

小数的转换。小数的分组,是从最高小数位开始,向低位延伸。如果

最低位的组不足3位,在后面补0。

例2-7:将二进制数(1.10101)

2

转换为8进制数。

解:将二进制数三位一组分组,计算每组的值如下:

1 0 1 1 1 0 0 1 0 1 0 。1 0 1 0 1 0

2 7 1 2 。 5 2

则:(1.10101)

2

=(2712.52)

8

仿照2进制转8进制数的推导方法,我们不难得到二进制数与

16进制数的转换方法(有关演算留作习题,这里从略)。具体来说就

是,将二进制数的整数和小数部分每四位分成一组。整数部分从最低

位向最高位顺序分组,如果最高位组不够4位,就在前面补0;小数

部分从最高位向最低位顺序分组,如果最低位组不够4位,在后面补

0。求出每一组4位二进制数的十进制值(在0~15之间),然后用

16进制符号表示,就得到了相应的16进制数。

例2-8:将二进制数(1.10101)

2

转换为16进制数。

解:将上述二进制数四位一组分组,计算每组的值如下:

0 1 0 1 1 1 0 0 1 0 1 0 。1 0 1 0 1 0 0 0

5 12 10 。 10 8

则:(1.10101)

2

=(5CA.A8)

16

上面将二进制数转换为8进制数和16进制数的规则,反过来也

可以用来将8进制和16进制数转换为2进制数。请看下面的例子。

例2-9:将8进制数(567.72)

8

转换为2进制数。

解:将上述八进制数的每一位分解成一个3位二进制数,最后得到就

是该8进制数对应的二进制数。具体计算如下:

5 6 7 . 7 2

1 0 1 1 1 0 1 1 1 . 1 1 1 0 1 0

则:(567.72)

8

=(101110111.111010)

2

例2-10:将16进制数(9F.B6)

16

转换为2进制数。

解:将上述16进制数的每一位分解成一个4位二进制数,最后得到

就是该16进制数对应的二进制数。具体计算如下:

9 F . B 6

1 0 0 1 1 1 1 1 . 1 0 1 1 0 1 1 0

则:(9F.B6)

16

=(10011111.1011011)

2

现在,作为练习,请检验例2-1到例2-5中同一个十进制数的2

进制与8进制、16进制之间的对应关系是否符合上面的转换规律。


发布者:admin,转转请注明出处:http://www.yc00.com/web/1715262483a2590975.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信