计算机导论与C语言(第2版)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

第2章 计算机中信息的表示

数制是用一组固定的数字和一套统一的规则来表示数目的方法。计算机在进行信息处理时,所要处理的信息必须首先在计算机中进行存储。本章将详细地介绍数值、字符、汉字在计算机中的存储形式,以及不同数制之间的转换规则,要求读者掌握计算机中信息的表示方式。

2.1 数制

2.1.1 数制的基本概念

数制是用一组固定的数字和一套统一的规则来表示数目的方法。

按照进位方式计数的数制叫进位计数制。人们日常生活中经常使用十进制数,十进制数即“逢十进一”,而在生活中也会遇到其他进制,如六十进制(每分钟60秒,每小时60分钟,即逢六十进一)、十二进制、十六进制等。

进位计数涉及基数与各数位的位权。十进制计数的特点是“逢十进一”,在一个十进制数中,需要用到10个数字符号0~9,其基数为10,即十进制数中的每一位是这10个数字符号之一。在任何进制中,一个数的每个位置都有一个权值。

基数是指该进制中允许选用的基本数码的个数。每一种进制都有固定数目的计数符号。

十进制:基数为10,10个记数符号分别为0、1、2、…、9。每一个数码符号根据它在这个数中所在的位置(数位),按“逢十进一”来决定其实际数值。

二进制:基数为2,2个记数符号分别为0和1。每个数码符号根据它在这个数中的数位,按“逢二进一”来决定其实际数值。

八进制:基数为8,8个记数符号分别为0、1、2、…、7。每个数码符号根据它在这个数中的数位,按“逢八进一”来决定其实际的数值。

十六进制:基数为16,16个记数符号为0~9、A、B、C、D、E、F。其中A~F对应十进制数的10~15。每个数码符号根据它在这个数中的数位,按“逢十六进一”决定其实际的数值。

一个数码处在不同位置上,所代表的值也不同,如数字6在十位数位置上表示60,在百位数上表示600,而在小数点后1位表示0.6,可见每个数码所表示的数值等于该数码乘以一个与数码所在位置相关的常数,这个常数叫做位权。位权的大小是以基数为底、数码所在位置的序号为指数的整数次幂。十进制数的个位数位置的位权是100,十位数位置上的位权为101,小数点后1位的位权为10-1,其他的依次类推。

十进制数(34958.34)10=3×104+4×103+9×102+5×101+8×100+3×10-1+4×10-2

小数点左边:从右向左,每一位对应的权值分别为100、101、102、103、104

小数点右边:从左向右,每一位对应的权值分别为10-1、10-2。

二进制数(100101.01)2=1×25+0×24+0×23+1×22+0×21+1×20+0×2-1+1×2-2

小数点左边:从右向左,每一位对应的权值分别为20、21、22、23、24、25

小数点右边:从左向右,每一位对应的权值分别为2-1、2-2。

不同的进制由于其进位的基数不同,其位权值也是不同的。

2.1.2 二进制及其运算

1.二进制的特点

十进制是人类最为方便的进制表示,但十进制数应用在计算机上却遇到了表示上的困难,10个不同符号的表示和运算很复杂。在计算机中采用二进制数的原因如下:

(1)可行性。采用二进制,只有0和1两个状态,需要表示0、1两种状态的电子器件很多,如开关的接通和断开、晶体管的导通和截止、磁元件的正负剩磁、电位电平的高与低等都可表示0、1两个数码。使用二进制,电子器件具有实现的可行性。

(2)简易性。二进制数的运算规则少,运算简单,使计算机运算器的硬件结构大大简化(十进制的乘法九九口诀表有55条公式,而二进制乘法只有4条规则)。

(3)逻辑性。由于二进制0和1正好与逻辑代数的假(false)和真(true)相对应,有逻辑代数的理论基础,用二进制数表示二值逻辑很自然。

2.数的二进制表示

在客观世界中,事物的数量是客观存在的,但表示的方法可以多种多样。

例如,345用十进制数码可以表示为(345)10=3×102+4×101+5×100,这里每个固定位置上的计数单位称为位权。十进制计数中个位上的计数单位为100=1,从个位向左,依次为101、102、103、…向右依次为10-1、10-2、…它用二进制数码可以表示为

二进制计数中个位上的计数单位也是1,即20=l,从个位向左依次为21、22、23、…向右依次为2-1、2-2、…

3.二进制数的算术运算

二进制数的算术运算与十进制数的算术运算类似,但其运算规则更为简单,其规则如表2.1所示。

表2.1 二进制数的运算规则

(1)二进制数的加法运算。

【例2.1】 二进制数1001与1011相加。

算式:被加数 (1001)2……(9)10

加数 (1011)2……(11)10

进位 +) 111

和数 (10100)2……(20)10

结果:(1001)2+(1011)2=(10100)2

由算式可以看出,两个二进制数相加时,每一位最多有3个数(本位被加数、加数和来自低位的进位)相加,按二进制数的加法运算法则得到本位相加的和及向高位的进位。

(2)二进制数的减法运算。

【例2.2】 二进制数11000001与00101101相减。

算式:被减数 (11000001)2……(193)10

减数 (00101101)2……(45)10

借位 -) 1111

差数 (10010100)2……(148)10

结果:(11000001)2-(11000001)2 =(10010100)2

由算式可以看出,两个二进制数相减时,每一位最多有3个数(本位被减数、减数和向高位的借位)相减,按二进制数的减法运算法则得到本位相减的差数和向高位的借位。

4.二进制数的逻辑运算

计算机中的逻辑关系是一种二值逻辑,逻辑运算的结果只有“真”或“假”两个值。二值逻辑很容易用二进制数的“0”和“1”来表示,一般用“1”表示真,用“0”表示假。逻辑值的每一位表示一个逻辑值,逻辑运算是按对应位进行的,每位之间相互独立,不存在进位和借位关系,运算结果也是逻辑值。

三种基本的逻辑运算。逻辑运算有“或”、“与”和“非”三种。其他复杂的逻辑关系都可以由这三个基本逻辑关系组合而成。

(1)逻辑“或”。用于表示逻辑“或”关系的运算,“或”运算符可用+、OR、∪或∨表示。其运算规则如下:

0+0=0

0+1=1

1+0=1

1+1=1

即两个逻辑位进行“或”运算,只要有一个为“真”,逻辑运算的结果就为“真”。

【例2.3】 如果A=1001111,B=1011101,求A+B。

步骤如下:

结果:A+B=1001111+1011101=1011111

(2)逻辑“与”。用于表示逻辑与关系的运算,称为“与”运算,与运算符可用AND、· 、×、∩或∧表示。其运算规则如下:

0×0=0

0×1=0

1×0=0

1×1=1

即两个逻辑位进行“与”运算,只要有一个为“假”,逻辑运算的结果就为“假”。

【例2.4】 如果A=1001111,B=1011101,求A×B。

步骤如下:

结果:A×B=1001111×1011101=1001101

(3)逻辑“非”。用于表示逻辑非关系的运算,该运算常在逻辑变量上加一横线表示。其运算规则如下:

即对逻辑位求反。

2.2 不同数制间的转换

在计算机内部,数据和程序都用二进制数来表示和处理,但计算机的输入/输出还是用十进制数来表示,这就存在数制间的转换问题,转换过程是通过机器软件系统自动完成的,但我们应当懂得数制转换的原理。

2.2.1 R进制数转换为十进制数

R进制数转换为十进制数时,可以采用按权展开各项相加的法则。

ln位整数m位小数其各位数为:(Kn-1Kn-2K2K1K0.K-1K-m),则l可以表示为:

当一个R进制数按权展开求和后,也就得到了该数值所对应的十进制数。

【例2.5】 将二进制数11011.01转换成对应的十进制数。

(11011.01)2=(1×24+1×23+0×22+1×21+1×20+0×2-1+1×2-2)10=(27.25)10

【例2.6】 将八进制数33.2转换成对应的十进制数。

(33.2)8=(3×81+3×80+2×8-1)10=(27.25)10

【例2.7】 将十六进制数1B.4H转换成对应的十进制数。

(1B.4)16=(1×161+11×160+4×16-1)10=(27.25)10

2.2.2 十进制数转换为R进制数

基数乘除法

将十进制数转换为R进制数,采用基数乘除法实现,整数部分和小数部分须分别遵守不同的转换规则:

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

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

1.十进制数转换为二进制数

十进制数转换为二进制数,基数为2,故对整数部分除2取余,对小数部分乘2取整。为了将一个既有整数部分又有小数部分的十进制数转换成二进制数,可以分别将其整数部分和小数部分进行转换,然后再进行组合。

【例2.8】 将(35.25)10转换成二进制数。

整数部分:除2取余法。

注意:第一次得到的余数是二进制数的最低位,最后一次得到的余数是最高位。

也可用如下方式直观地表示计算过程。

小数部分:乘2取整法。

注意:一个十进制小数不一定能完全准确地转换成二进制小数,这时可以根据精度要求只转换到小数点后某一位即可。将其整数部分和小数部分分别转换,然后组合起来得(35.25)10=(100011.01)2

2.十进制数转换为八进制数

八进制数码的基本特征是:用8 个不同符号0、1、2、3、4、5、6、7 组成的符号串表示数量,相邻两个符号之间遵循“逢八进一”的原则,即各位上的位权是基数8的若干次幂。

【例2.9】 将十进制数(1725.32)10转换成八进制数(转换结果取3位小数)。

十进制数转换成八进制数,基数为8,故对整数部分除8取余,对小数部分乘8取整。为了将一个既有整数部分又有小数部分的十进制数转换成八进制数,可以将其整数部分和小数部分分别转换,然后再组合。

整数部分:除8取余法。

小数部分:乘8取整法。

得(1725.32)10≈(3275.243)8

3.十进制数转换为十六进制数

十六进制数码的基本特征是:用16个不同符号0~9和A、B、C、D、E、F组成的符号串表示数量,相邻两个符号之间遵循“逢十六进一”的原则,即各位上的位权是基数16的若干次幂。

将十进制整数转换成十六进制整数可以采用“除16 取余”法;将十进制小数转换成十六进制小数可以采用“乘16取整”法。如果十进制数既含有整数部分又含有小数部分则应分别转换后再组合起来。

【例2.10】 将(237.45)10转换成十六进制数(取3位小数)。

整数部分:除16取余法。

小数部分:乘16取整法。

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

2.2.3 二进制数转换为八进制数、十六进制数

二进制数、八进制数、十六进制数码间的关系:8和16都是2的整数次幂,即8=23,16=24,因此3位二进制数相当于l位八进制数,4位二进制数相当于l位十六进制数,如表2.2所示,它们之间的转换关系也相当简单。由于二进制数表示数值的位数较长,因此常用八进制数、十六进制数来表示二进制数。

表2.2 二进制数、八进制数、十六进制数的对应关系表

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

【例2.11】 将二进制数(11101110.00101011)2转换成八进制数、十六进制数。

2.2.4 八进制数、十六进制数转换为二进制数

将每位八(或十六)进制数展开为3(或4)位二进制数。

【例2.12】{L-End}

【例2.13】{L-End}

整数前的高位零和小数后的低位零可取消。

在各种进制转换中,最为重要的是二进制数与十进制数之间的转换计算,以及八进制数、十六进制数与二进制数之间的直接对应转换。

2.3 计算机中的数据及其编码

数据(data)是表征客观事物的、可以被记录而且能够被识别的各种符号,包括字符、符号、表格、声音、图形和图像等。简而言之,一切可以被计算机加工、处理的对象都可以被称之为数据。数据可在物理介质上记录或传输,并通过外围设备被计算机接收,经过处理而得到结果。

数据能被输入计算机加以处理,包括存储、传送、排序、归并、计算、转换、检索、制表和模拟等操作,以得到满足人们需要的结果。数据经过解释并赋予一定的意义后,便成为信息。这里所说的数据指的是广义的数据,可以用来表示:

● 事物的数量,如产量、资金、职工人数和物品数量等;

● 事物的名称或代号,如厂名、车间名、学校名和职工名等;

● 事物抽象的性质,如人体的健康状况、文化程度、政治面貌和工作能力等。

数据有两种形式。一种形式为人类可读形式的数据,简称人读数据。因为数据首先是由人类进行收集、整理、组织和使用的,这就形成了人类独有的语言、文字和图像,如图书资料、音像制品等。另一种形式称为机器可读形式的数据,简称机读数据。如印刷在物品上的条形码,录制在磁带、磁盘、光盘上的数码,穿在纸带和卡片上的各种孔等,都是通过特制的输入设备将这些信息传输给计算机处理,它们都属于机器可读数据。显然,机器可读数据采用了二进制数据的形式。

2.3.1 数据的单位

计算机中数据的常用存储单位有位、字节和字。

1.位(bit)

计算机采用二进制数,运算器运算的是二进制数,控制器发出的各种指令也用二进制表示,存储器中存放的数据和程序均是二进制数,在网络上进行数据通信时发送和接收的还是二进制数。显然,在计算机内部到处都是由0和1组成的数据流。

计算机中最小的数据单位是二进制的一个数位,简称为位(bit或b),也叫比特,是最小的信息单位。计算机中最直接、最基本的操作就是对二进制位的操作。

2.字节(Byte)

字节简写为B。为了表示人读数据中的所有字符(字母、数字以及各种专用符号,大约有128~256个),需要7位或8位二进制数。因此,人们采用8位为1个字节。1个字节由8个二进制数位组成。

字节是计算机中用来表示存储空间大小的基本容量单位。例如,计算机内存的存储容量、磁盘的存储容量等都是以字节为单位表示的。除用字节为单位表示存储容量外,还可以用千字节(KB)、兆字节(MB)以及十亿字节(GB)等表示存储容量。它们之间存在下列换算关系:

1B=8bit

1KB=1024B=210 B(K的意思是“千”)

1MB=1024KB=210KB=220 B=1024×1024B(M读“兆”)

1GB=1024MB=210MB=230 B=1024×1024KB(G读“吉”)

1TB=1024GB=210GB=240 B=1024×1024MB(T读“太”)

注意:位是计算机中最小的数据单位,而字节是计算机中的基本信息单位。

2.3.2 常用的数据编码

信息是经过加工的数据,数据要按照规定的二进制形式表示才能被计算机处理,这些规定的形式就是数据的编码。数据的类型有很多,数字和文字是最简单的类型,表格、声音、图形和图像则是复杂的类型。计算机不能直接处理英文字母、汉字、图形或声音,而是需要对这些数据进行编码,编码过程就是实现将信息在计算机中转化为0和1二进制串的过程。编码时需要考虑数据的特性,还要考虑便于计算机的存储和处理,所以编码是一项非常重要的工作。下面介绍几种常用的编码方法。

1.ASCII编码

字符是计算机中最多的信息形式之一,是人与计算机进行通信、交互的重要媒介。在计算机中,要为每个字符指定一个固定的编码,作为识别与使用这些字符的依据。

字符信息包括字母和各种符号,它们必须按规定的二进制码来表示,计算机才能对其进行处理。字母及数字字符共62个,包括26个大写英文字母、26个小写英文字母和0~9这10个数字。此外,还有其他类型的符号(如%、#等),用127个符号足以表示字符符号的范围。

1字节(Byte)为8位,最高位总是0,用7位二进制数可表示0000000~1111111范围中27=128 个字符。在西文领域的符号处理普遍采用的是美国标准信息交换码(ASCII码:American Standard Code for Information Interchange),虽然ASCII码是美国国家标准,但它已被国际标准化组织(ISO)认定为国际标准。ASCII码已得到世界公认并在世界范围内通用。

标准的ASCII码是7位,用1B表示,最高位总是0,可以表示128个不同符号。其中前32个和最后一个通常是计算机系统专用的,代表一个不可见的控制字符。数字字符0~9的ASCII码是连续的,为30H~39H(H表示是十六进制数);大写字母A~Z和小写英文字母a~z的ASCII码也是连续的,分别为41H~5AH和61H~7AH。因此,在知道一个字母或数字的ASCII码后,很容易推算出其他字母和数字的ASCII码。

例如:大写字母A,其ASCII码为1000001,即ASC(A)=65;小写字母a,其ASCII码为1100001,即ASC(a)=97。可推得ASC(D)=68,ASC(d)=100。

扩展的ASCII码是8位码,也用1B表示,其前128个码与标准的ASCII码是一样的,后128个码(最高位为1)则有不同的标准,并且与汉字的编码有冲突。为了查阅方便,在表2.3中列出了ASCII码字符编码。

表2.3 7位ASCII码表

例如:大写字母A,查表得(b7b6b5b4b3b2b1)=1000001。当从键盘输入字符‘A’,计算机首先在内存存入‘A’的ASCII码(01000001),然后在BIOS(基本输入/输出系统)中查找与01000001对应的字形(英文字符的字形固化在BIOS中),最后在输出设备(如显示器)输出‘A’的字形。

注意:1个字符用1个字节表示,其最高位总是0。

2.汉字编码

要在计算机中处理汉字字符,需要解决汉字的输入/输出以及汉字的处理等问题,较为复杂。汉字集很大,必须解决如下问题:

① 键盘上无汉字,不可能直接与键盘对应,需要输入码来对应。

② 汉字在计算机中的存储需要机内码来表示,以便查找。

③ 汉字量大,字形变化复杂。需要用对应的字库来存储。

由于汉字具有特殊性,计算机处理汉字信息时,汉字的输入、存储、处理及输出过程中所使用的汉字代码不相同,其中有用于汉字输入的输入码,用于机内存储和处理的机内码,用于输出显示和打印的字模点阵码(或称字形码)。即在汉字处理中需要经过汉字输入码、汉字机内码、汉字字形码的三码转换,具体转换过程如图2.1所示。

图2.1 汉字编码转换过程

(1)汉字的输入码(外码)。汉字输入码是为了利用现有的计算机键盘,将形态各异的汉字输入计算机而编制的代码。目前在我国推出的汉字输入编码方案很多,其表示形式大多是字母、数字或符号。编码方案大致可以分为:以汉字发音进行编码的音码,如全拼码、简拼码、双拼码等;按汉字的书写形式进行编码的形码,如五笔字型码;也有音形结合的编码,如自然码。

(2)信息交换用汉字编码字符集。汉字集要存储在计算机中,需要将经常使用的汉字存储在计算机中,《信息交换用汉字编码字符集·基本集》是我国于1980年制定的国家标准GB 2312—80,代号为国标码,是国家规定的用于汉字信息处理的代码的国家标准。

使用多少位来表示汉字集呢?GB 2312—80 中规定了信息交换用的6763 个汉字和682个非汉字图形符号(包括几种外文字母、数字和符号)的代码,即共有7445个代码。由于汉字要与西文符号表示相区别,在每个字节表示中最高位必须为1,只能用后7位表示汉字集,一个7位二进制符号只能表示27=128个汉字,而两个7位二进制符号能表示214=16384个汉字,足以表示常用的7445个汉字,因此一个汉字应当用两个字节表示。

汉字的区位码:每个汉字(图形符号)采用2B表示,每个字节只用低7 位。由于低7位中有34种状态是用于控制字符的,因此,只有94(128-34=94)种状态可用于汉字编码。这样,双字节的低7位只能表示94×94=8836种状态。此标准的汉字编码表有94行、94列。其行号称为区号,列号称为位号。双字节中,用高字节表示区号,低字节表示位号。非汉字图形符号置于第1~11区,国标汉字集中有6763个汉字,又按其使用频度、组词能力以及用途大小分成一级常用汉字3755个,二级常用汉字3008个。一级汉字置于第16~55区,二级汉字置于第56~87区。

(3)汉字的机内码。汉字的机内码是供计算机系统内部进行存储、加工处理、传输而统一使用的代码,又称为汉字内部码或汉字内码。不同的系统使用的汉字机内码有可能不同。目前使用最广泛的是一种为2B的机内码,俗称变形的国标码。这种格式的机内码是将国标GB 2312—80交换码的2B的最高位分别置为1而得到的。机内码的最大优点是表示简单,且与交换码之间有明显的对应关系,同时也解决了中西文机内码存在二义性的问题。

下面给出了“西”字由区位码到机内码的转换过程示例。“西”的区位码是46 87,为十进制表示。转换为机器内码的方法为:①每字节转化为十六进制。②每字节高位置为1。③每字节加(20)16得机内码。汉字“西”的机内码则为(CEF7)16。转换过程如图2.2所示。

图2.2 输入“西”字时从区位码到机内码的转换过程示意图

(4)汉字的字形码。汉字的字形码是汉字字库中存储的汉字字形的数字化信息,用于汉字的显示和打印。常用的输出设备是显示器与打印机。汉字字形库可以用点阵和矢量来表示。目前汉字字形的产生方式大多是以点阵方式形成汉字,因此汉字的字形码主要是指汉字字形点阵的代码。

汉字字形点阵有16×16点阵、24×24点阵、32×32点阵、64×64点阵、96×96点阵、128×128点阵、256×256 点阵等。一个汉字方块中行数、列数分得越多,描绘的汉字也就越细微,相应占用的存储空间也就越多。汉字字形点阵中每个点的信息要用一位二进制码来表示。对16×16 点阵的字形码,需要用32B(16×16÷8=32)表示;24×24 点阵的字形码需要用72B(24×24÷8=72)表示。

汉字字库是将汉字字形数字化后,以二进制文件形式存储在存储器中而形成的汉字字模库。汉字字模库亦称汉字字形库,简称汉字字库。

注意:国标码用2字节表示1个汉字,每个字节只用后7位。计算机处理汉字时,不能直接使用国标码,而要将最高位置为1,转换成汉字机内码,其原因是为了区别汉字码和ASCII码,当最高位是0时,表示为字符的ASCII码,当最高位是1时,表示为汉字码。

2.3.3 计算机中数的表示

在计算机中只能用数字化信息来表示数的正负,人们规定用“0”表示正号,用“1”表示负号。例如,在机器中用8位二进制码表示一个数+90,其格式如图2.3所示。而用8位二进制码表示一个数-89,其格式如图2.4所示。

图2.3 +90的二进制码

图2.4 -89的二进制码

在计算机内部,数字和符号都用二进制码表示,两者合在一起构成数的机内表示形式,称为机器数,而它真正表示的数值称为这个机器数的真值。

(1)机器数表示的数的范围受设备限制。在计算机中,一般用若干个二进制位表示一个数或一条指令,把它们作为一个整体来处理、存储和传输。这种作为一个整体来处理的二进制位串,称为计算机字。表示数据的字称为数据字,表示指令的字称为指令字。

计算机是以字为单位进行处理、存储和传输的,所以运算器中的加法器、累加器以及其他一些寄存器,都选择与字长相同的位数。字长一定,则计算机数据字所能表示的数的范围也就确定了。

例如:使用8位字长计算机,它可表示无符号整数的最大值是(255)10=(11111111)2。运算时,若数值超出机器数所能表示的范围,就会停止运算和处理,这种现象称为溢出。

(2)定点数。计算机中运算的数,有整数,也有小数,如何确定小数点的位置呢?通常有两种约定:一种是规定小数点的位置固定不变,这时机器数称为定点数;另一种是小数点的位置可以浮动,这时的机器数称为浮点数。微型机多选用定点数。

数的定点表示是指数据字中的小数点的位置是固定不变的。小数点位置可以固定在符号位之后,这时数据字就表示一个纯小数。假定机器字长为16位,符号占1位,数值部分占15位,故下面机器数其等效的十进制数为-2-15,如图2.5所示。

如果把小数点位置固定在数据字的最后,这时,数据字就表示一个纯整数。假设机器字长为16位,符号占1位,数值部分占15位,故下面机器数其等效的十进制数为+32767,如图2.6所示。

图2.5 定点小数

图2.6 定点整数

定点表示法所能表示的数值范围很有限,为了扩大定点数的表示范围,可以通过编程技术,采用多个字节来表示一个定点数,如采用4B或8B等。

(3)浮点数。浮点表示法就是小数点在数中的位置是浮动的。在以数值计算为主要任务的计算机中,由于定点表示法所能表示的数的范围很有限,不能满足计算问题的需要,因此就要采用浮点表示法。在同样字长的情况下,浮点表示法所表示的数的范围就扩大了。

计算机中的浮点表示法包括两个部分:一部分是阶码(表示指数,记做E);另一部分是尾数(表示有效数字,记做M)。设任意一个数N在机器中的表示方法如图2.7所示,其中2为基数,E为阶码,M为尾数。

图2.7 浮点数表示格式

由尾数部分隐含的小数点位置可知,尾数总是小于1的数字,它给出该浮点数的有效数字。尾数部分的符号位确定该浮点数的正负。阶码给出的总是整数,它确定小数点浮动的位数,若阶符为正,则向右移动;若阶符为负,则向左移动。

假设机器字长为32位,阶码为8位,尾数为24位,则其浮点数在机器中的表示方法如图2.8所示。其中左边1位表示阶码的符号,符号位后的7位表示阶码的大小。在后24位中,有1位表示尾数的符号,其余23位表示尾数的大小。浮点数表示法对尾数有如下规定:

1/2M<1

即要求尾数中第1位数不为零,这样的浮点数称为规格化数。

图2.8 浮点数表示示例

当浮点数的尾数为零或者阶码为最小值时,机器通常规定:把该数看做零,称为“机器零”。在浮点数的表示和运算中,当一个数的阶码大于机器所能表示的最大码时,产生“上溢”现象。产生上溢时,机器一般不再继续运算而转入“溢出”处理。当一个数的阶码小于机器所能代表的最小阶码时产生“下溢”现象。产生下溢时,一般当做机器零来处理。

习题

一、选择题

1.在计算机内部,数据是以_____形式加工、处理和传送的。

A.二进制数

B.八进制数

C.十六进制数

D.十进制数

2.二进制数10011010和00101011进行逻辑乘运算(即“与”运算)的结果是。

A.00001010

B.10111011

C.11000101

D.11111111

3.在计算机内部,用来传送、存储、加工处理的数据或指令都是用_____。

A.区位码

B.ASCII码

C.十进制

D.二进制

4.将十进制数147转换成2字节的二进制数是_____。

A.0000000010010011

B.000000001100111

C.10010011

D.1100111

5.与十进制数97等价的八进制数是。

A.1100001

B.141

C.61

D.111

6.将十进制数107转换成十六进制数是。

A.6B

B.113

C.B5

D.11B

7.将二进制数1110.01转换成十进制数是。

A.16.1

B.32.125

C.14. 25

D.70.02

8.将八进制数1073转换成十进制数是。

A.1028

B.571

C.256

D.512

9.将十六进制数2F8转换成十进制数是。

A.512

B.1024

C.496

D.760

10.将二进制数101111101.0101转换成八进制数是。

A.155.11

B.555.21

C.575.24

D.155.21

11.将二进制数101111101.0101转换成十六进制数是。

A.17C.5

B.555.21

C.575.24

D.17D.5

二、填空题

1.将下列十进制数转换成相应的二进制数。

(84)10=( )2

(57.687)10=( )2

2.将下列二进制数转换成相应的十进制数、八进制数、十六进制数。

(1101101)2=( )10=( )8=( )16

(10101.1011)2=( )10=( )8=( )16

3.计算机中的最小数据单位是。

4.在计算机中,一个字节由_____个二进制位组成。一个西文字符用_____个字节表示,一个汉字用_____个字节表示。

5.1MB的存储空间最多能存储_____个汉字。

6.存放16个16×16点阵的汉字字模,需占存储空间为_____。

7.3位二进制可以表示_____种状态。

8.32MB等于_____字节。

9.字符‘A’的ASCII码为_____,'a'的ASCII码为_____。

10.汉字“啊”的区位码为_____。

三、简答题

1.计算机为什么要采用二进制表示数据?

2.计算机中常用的信息编码有哪几种?请列出它们的名称。

3.什么是计算机外码和内码?简述它们之间的区别。

4.说明浮点数表示数据的原理。