从零开始学C语言
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.2.2 数制的转换

我们知道计算机中数据是以二进制的形式存在的,但是二进制数据太长,没有人愿意对很长的二进制进行操作,用十六进制或八进制可以解决这个问题。因为进制越大,数的表达长度也就越短。不过,为什么偏偏是十六或八进制,而不是其他的诸如九或二十进制呢?因为2、8、16,分别是2的1次方、3次方、4次方,这一点使得三种进制之间可以非常直接地互相转换。八进制或十六进制既缩短了二进制数又保持了二进制数的表达特点。

1.二进制、八进制、十六进制转换成十进制

规则:数码乘以各自的权的累加

【实例1-1】其他进制转换成十进制。

(10001)B=24+20=17

(101.01)B=22+20+2-2=5.25

(011)O=81+80=9

(72)O=7*81+2*80=58

(112A)H=1*163+1*162+2*161+10*160=4394

2.十进制转换成二进制、八进制、十六进制

规则如下。

❑ 整数部分:除以进制取余数,直到商为0,余数从下到上排列。

❑ 小数部分:乘以进制取整数,得到的整数从上到下排列。

【实例1-2】十进制转换成其他进制。

(1)十进制20.345转换成二进制

20.345D=10100.01011B

(2)十进制100转换成八进制、十六进制

3.二进制转换成八进制

规则如下。

❑ 整数部分:从右向左按三位进行分组,不足补零。

❑ 小数部分:从左向右按三位进行分组,不足补零。

【实例1-3】将二进制数(1101101110.110101)2转换成八进制数。

(1101101110.110101)2=(1556.65)8

4.二进制转换成十六进制

规则如下。

❑ 整数部分:从右向左按四位进行分组,不足补零。

❑ 小数部分:从左向右按四位进行分组,不足补零。

【实例1-4】将二进制数(001101101110.110101)2转换成十六进制数。

(001101101110.110101)2=(36E.D4)16

5.八进制、十六进制转换成二进制

规则如下。

❑ 一位八进制对应三位二进制。

❑ 一位十六进制对应四位二进制。

【实例1-5】八进制、十六进制转换成二进制。