1.3 计算机中信息的编码

1.3.1 计算机中常用的数制及其转换

计算机是采用数制来存储或表示数据的。数制,即进位计数制,是人们利用数字符号按进位原则进行数据大小计算的方法。通常是以十进制来进行计算的。另外,还有二进制、八进制和十六进制等。

人类在日常生活中常用十进制来表述事物的量,即逢10进1,实际上这并非天经地义,只不过是人们的习惯而已,生活中也常常遇到其他进制,如六十进制:(每分钟为60秒,每小时60分钟,即逢60进1,十二进制,(计量单位“一打”)等。

在计算机领域,最常用到的是二进制,这是因为计算机是由千千万万个电子元件(如电容器、电感器、晶体管等)组成,这些电子元件一般都是只有两种稳定的工作状态(如晶体管的截止和导通),用高、低两个电位表示“1”和“0”在物理上是最容易实现。

二进制的书写一般比较长,而且容易出错。因此除了二进制外,为了便于书写,计算机中还常常用到八进制和十六进制。一般用户与计算机打交道并不直接使用二进制数,而是十进制数(或八进制、十六进制数),然后由计算机自动转换为二进制数。但对于使用计算机的人员来说,了解不同进制数的特点及它们之间的转换是必要的。

1.进位计数制

(1)计数符号

每一种进制都有固定数目的计数符号。

十进制:有10个记数符号,0、1、2、…、9,逢十进一。

二进制:有2个记数符号,0和1,逢二进一。

八进制:有8个记数符号,0、1、2、…、7,逢八进一。

十六进制:有16个记数符号,0~9,以及A~F,其中A~F分别对应十进制的10~15,逢十六进一。

(2)权值

在任何进制中,一个数的每个位置都有一个权值。比如十进制数34958的值为:

(34958)10=3×104+4×103+9×102+5×101+8×100

从右向左,每一位对应的权值分别为100,101,102,103,104

不同的进制由于其进位的基数不同,其权值也是不同的。比如二进制数100101,其值应为:

(100101)2=1×25+0×24+0×23+1×22+0×21+1×20

从右向左,每个位对应的权值分别为20,21,22,23,24,25

2.不同数制的相互转换

(1)二、八、十六进制数转换为十进制数

按权展开求和,即将每位数码乘以各自的权值并累加。

例1-1:(1001.1)2=1×23+0×22+0×21+1×20+1×2-1

=8+1+0.5

=(9.5)10

(345.73)8=3×82+4×81+5×80+7×8-1+3×8-2

=192+32+5+0.875+0.046875

=(229.921875)10

(A3B.E5)16=10×162+3×16'+11×160+14×16-1+5×16-2

=2560+48+11+0.875+0.01953125

=(2619.89453125)10

(2)十进制数转换为二、八、十六进制数

整数部分和小数部分须分别遵守不同的转换规则。假设将十进制数转换为R进制数:

整数部分:除以R取余法,即整数部分不断除以R取余数,直到商为0为止,最先得到的余数为最低位,最后得到的余数为最高位。

小数部分:乘R取整法,即小数部分不断乘以R取整数,直到积为0或达到有效精度为止,最先得到的整数为最高位(最靠近小数点),最后得到的整数为最低位。

例1-2:将(75.453)10转换成二进制数(取4位小数)。

得(75.453)10=(1001011.0111)2

例1-3:将(152.32)10转换成八进制数(取3位小数)。

得(152.32)10=(230.243)8

例1-4:将(237.45)10转换成十六进制数(取3位小数)。

得(237.45)10=(ED.733)16

(3)二进制数转换为八、十六进制数

因为23=8,24=16,所以3位二进制数对应1位八进制数,4位二进制数对应1位十六进制数。二进制数转换为八、十六进制数比转换为十进制数容易得多,因此常用八、十六进制数来表示二进制数。表1-1列出了它们之间的对应关系。

将二进制数以小数点为中心分别向两边分组,转换成八(或十六)进制数,每3(或4)位为一组,不够位数在两边加0补足,然后将每组二进制数化成八(或十六)进制数即可。

表1-1 二进制数、八进制数和十六进制数之间的对应关系

例1-5:将二进制数1001101101.11001分别转换为八、十六进制数。

(4)八、十六进制转换为二进制

将每位八(或十六)进制数展开为3(或4)位二进制数,不够位数在左边加0补足。

注意:整数前的高位零和小数后的低位零可以取消。