大学计算机基础-第2章计算机硬件系统_第1页
大学计算机基础-第2章计算机硬件系统_第2页
大学计算机基础-第2章计算机硬件系统_第3页
大学计算机基础-第2章计算机硬件系统_第4页
大学计算机基础-第2章计算机硬件系统_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

大学计算机基础:第2章计算机硬件系统

第2章计算机硬件系统

我们已经知道通用计算机只能存储和处理二进制数据,各式各样的图片、声音、视频信息在计算机中

如何存储?数据的算术逻辑运算如何实现?你了解计算机的组成、性能指标、各种输入输出设备吗?当你

要买一台计算机,或者是所用的计算机出了某些故障时,你当然希望掌握更多的硬件知识。在这一章里,

我们将介绍数据表示和运算及计算机硬件系统的基础知识。

2.1数据表示和运算

2.1.1计算机中的数据表示

什么是数据表示(DataRepresentation)?人们使用计算机处理各种类型的数据,如文本、数字、图形

图像、音频、视频等等,数据表示是将各种数据类型转换为计算机能够识别和处理的形式。

通用电子计算机是一种电子设备,其中的电路只有开、关两种状态。为了方便描述,我们一般用0/1

分别表示电路的关/开,如“开关关开”这个电路序列会被描述成1001,因而人们常说计算机只能识别0/1

(二进制)数据。每一个开关状态对应一位二进制数据。

位(bit)也称为一个二进制位(binarydigit)是计算机表示数据的最小单位,只能取0或1。8个二进

制位构成1个字节(byte),byte是计算机存储信息的基本单位,用来文件大小描述内存或其他存储设备容

量。计算机领域中,一般可以用字母大写“B”表示byte,而用小写字母“b”表示bit。如某计算机硬盘

容量为120GB(1GB=23°B,即1,073,741,824字节);网络带宽常用bps(bitpersecond,表示每秒钟传输

多少位信息)作为基本单位。在表示存储容量时,人们常常用KB(Kilobyte,千字节),MB(Megabyte,

兆字节),GB(Gigabyte,千兆字节),TB(Terabyte,吉字节)作为单位,一般地,它们与byte之间的换

算关系为:

1KB=210bytes=1,024bytes

1MB=2"bytes=1,048,576bytes

1GB=230bytes=1,073,741,824bytes

1TB=240bytes=1,099,511,627,776bytes

还有一个词——字(Word)经常会与bit、byte相提并论。字是计算机信息交换、加工、存储的基本

单元,通常将组成一个字的位数成为字长。字长表示计算机能并行处理的数据长度,是计算机性能的一个

重要指标,如早先的8086是16位机,它在一个周期内能处理2个字节的数据;386以后是32位机;目前

很多主流的计算机都是64位,它们的CPU内部通用寄存器为64位,采用64位指令集,一次可以处理64bit

数据。如果要从内存储器中读一个64位的数据,64位机一般只需要读1次即可.,而8位机需要读8次。

在了解了这些基本单位后,我们讨论各种类型数据在计算机中如何表示。

1、文本(text)

图2-1用ASCH表示一个字符串

文本是一串表达某些思想的语言符号。例如在英语中,人们使用26个大、小写字母符号拼写单词,、

0~9共10个符号表示数字,另外使用一些特殊符号来表示标点等信息。为了表示文本,我们可以为每个符

号指定一个二进制的编号,若要将文本存入计算机,则将每个符号转换成对应的二进制编号存储,输出时

.1.

大学计算机基础:第2章计算机硬件系统

再做相反的转换。如要将单词“happy”存入计算机,可以将每个符号“翻译”成对应的编号(如图2-1),

并将这些编号顺序保存在存储器中。

现在我们要考虑两个问题。•是怎样确定编号的位数。这取决于文本集合中总共可能用到多少种符号。

假设你设计了一种语言,只使用26个小写字母符号,这个编码只需要5位二进制数(25=32>26)就足够

表示了(如00000表示㈤,00001表示'b',11001表示,z,,还剩下110KM11116个编码待用)。

如果要设计—种编码来表示一位十进制数符0,1,2,3……9,则需要至少4位二进制数(24=16>10),如

常用的8421码就使用4位权为8421的二进制数来编码等值的十进制数符。

如果要对汉字进行编码,则要采用更多的二进制位数来表示。因为汉字符号有成千上万个,所以一般

使用两个字节(16位),甚至更多的数位进行编码。为了表示各种语言,不同语种的国家采用了不同的编

码(code)方式。

第二个问题是,别人怎样识别你的编码。当人们使用电报来传送信息时,接受方和发送方必定使用同

一种编码。同样的,为了保证不同的计算机都能识别你的文件,应该采用一些标准的编码方式。目前,国

际上比较常用的字符编码有:ASCII码、EBCDIC、Unicode码等。

ASCII(AmericanStandardCodeforInformationInterchange)是美国国家标准协会(ANSI)开发的一

种编码系统,主要用于显示现代英语和其他西欧语言,是当前世界上最通用的一种字符编码。在ASCII中,

每个字符采用7位二进制数进行编码,因而它可以表示27即128个字符,见表2-1。

表2-1ASCII表

3位

低4补、000001010on100101110111

0000NULDLESP0@p、P

0001SOHDC1!iAQaq

0010STXDC22BRbr

0011ETXDC3#3CScs

0100EOTDC4$4DTdt

0101ENQNAK%5EUeu

0110ACKSYN&6FVfV

0111DELETBi7Gwgw

1000BSCAN(8HXhX

1001HTEM)9IYiy

1010LFSUB*JZjz

1011VTESC+K[k(

1100FFFS<L\11

1101CRGS-=M]m)

1110SORS>Ntn〜

1111SIUS/9OI0DEL

ASCH码有如下特点:

1)使用7位二进制数对所有符号进行编码,编码最小为0000000(对应十进制数0),最大为1111111

(对应十进制数127);

2)第一个编码对应NUL(空字符),事实上表示没有任何字符;最后一个编码表示删除字符;

3)共有31个控制字符(非打印字符),它们的编号为0000001-0011111,即前2列除NUL外的字符;

4)数字字符的编码(0110000-0111001)小于大写字母(1000001-1011010),大写字母编码小于小写

字母(1100001~1111010)»

.2.

_____________________________________大学计算机基础:第2章计算机硬件系统

5)除控制字符、数字字符、大小写英文字符外,还有若干可打印字符

毕竟ASCH只能表示128个字符,随着计算机应用的深入,人们希望增加其它一些常用的字符。这样

在ASCII码的基础上,出现了一种称为扩展的ASCII码(ExtendedASCII)的编码。ExtendedASCH采用

一个字节即8位二进制对字符进行编码,可以表示256(28)个符号。它的前128个字符与ASCII相同,

只是在最高位上加个O如'A'的ASCH为1000001,ExtendedASCII为01000001;而后128个字符的

编码存在多个版本,目前没有统一的标准。

还有一-种使用8位二进制进行编码的方式EBCDIC(ExtendedBinary-CodedDecimalInterchange

Code,扩展的二-十进制交换码),它是IBM公司早年开发出的一种编码,目前只用在IBM的某些大型主

机上,EBCDIC编码开始的128个字符和ASCII的编码并不相同。

无论是7位还是8位的编码要表示除英语以外的语言(如汉语)可能还是不够的,人们需要种能表

示更多符号的编码方式。一些软硬件的生产商联合设计了一种称为Unicode(UniversalMultiple-OctetCoded

CharacterSet)的编码方式,它使用16位二进制数编码,最多可以表示65536(2,6)个符号。Unicode使

用不同的区表示不同的语言符号,并且可以表示一些特殊的图形符号。从原理上讲,Unicode可以表示现

在正在使用的、或者已经不再使用的任何语言中的字符。对于国际商业和通信来说,这种编码方式是非常

有用的,因为在一个文件中可能需要包含有汉语、日语、英语等不同的语种。并且,Unicode编码还适用

于软件的本地化,即可以针对特定的国家修改软件。另外,使用Unicode编码,软件开发人员可以修改屏

幕的提示、菜单和错误信息提示等,来适用于不同国家的语言文字,Java语言中就使用Unicode编码方式。

汉字与英文字符在数量上差异极大,一般而言,7位的ASCII就足够表示所有的英文字母和符号了,

而中文字多达数万字,因此最少要使用2个字节来储存一个汉字的内码。另外,因为汉字是象形文字,在

输入、显示上也比较复杂,讨论汉字编码时,要涉及到输入码、国标码、字形码等等。

图2-2汉字编码

输入码是使用计算机的输入设备进行汉字输入的编码。常用的输入码有音码类的全拼、双拼、微软拼

音、自然码和智能ABC等,形码类如五笔字型法、郑码输入法等,顺序码如区位码;此外,有些软件提

供了语音识别输入和手写输入功能。汉字输入计算机后,以机内码的形式保存在存储器中。

ASCH码是英文信息处理的标准编码,汉字信息处理也有一个统一的标准编码,它是我国国家标准局

于1981年5月颁布的《信息交换用汉字编码字符集——基本集》,代号为GB2312-80,共对6763个汉字

和682个图形字符进行了编码,其编码原则为:汉字用两个字节表示,每个字节用七位码(高位为0),国

家标准将汉字和图形符号排列在一个94行94列的二维代码表中,每两个字节分别用两位十进制编码,前

字节的编码称为区码,后字节的编码称为位码,此即区位码,如“保”字在二维代码表中处于17区第3

位,区位码即为“1703

国标码并不等于区位码,它是由区位码稍作转换得到,其转换方法为:先将十进制区码和位码转换为

十六进制的区码和位码,这样就得了一个与国标码有一个相对位置差的代码,再将这个代码的第一个字节

和第二个字节分别加上20H,就得到国标码,相当于如果不转换的话,在两个字节上分别加上32即可。

如:“保”字的国标码为3123H,它是经过下面的转换得到的:1703D->1103H->+20H->3123H。

国标码是汉字信息交换的标准编码,但因其前后字节的最高位为0,与ASCII码发生冲突,如“保”

字,国标码为31H和23H,而西文字符“1”和“#"的ASCH也为31H和23H,现假如内存中有两个字

节为31H和23H,这到底是一个汉字,还是两个西文字符“1”和“#"?显然,在计算机内采用国标码可

能出现二义性,所以汉字的机内码采用变形国标码。其变换方法为:将国标码的每个字节都加上128(27),

即将两个字节的最高位由0改1,其余7位不变,也就是如果国标码是16进制的,直接加上8080H即可。

如:由上面我们知道,‘'保"字的国标码为3123H,高字节为001100知B,低字节为0010001IB,将两个字

节的最高位改为1后变成10110001B和10100011B即为B1A3H,因此,“保”字的机内码就是B1A3H。

.3.

大学计算机基础:第2章计算机硬件系统

显然,汉字机内码的每个字节都大于128,这就解决了与西文字符的ASCII码冲突的问题。

汉字字形码又称汉字字模,用于汉字的显示或者打印,通常有点阵和矢量两种表示方式。用点阵表示

字形时,汉字字形码一般指确定汉字字形的点阵代码。字形码也称字模码,它是汉字的输出形式,随着汉

字字形点阵和格式的不同,汉字字形码也不同。常用的字形点阵有16X16点阵、24X24点阵、48X48点

阵等等,点阵中每个点的信息用一位二进制码来表示,“1”表示对应位置处是黑点,“0”表示对应位置处

是空白。字形点阵的信息量很大,所占存储空间也很大,例如16X16点阵的每个汉字就要占32个字节(16

X164-8=32);每个24X24点阵的字形码需要用72字节(24X24+8=72),因此字形点阵只能用来构成字

库,而不能用来替代机内码用于机内存储。字库中存储了每个汉字的字形点阵代码,不同的字体(如宋体、

仿宋、楷体、黑体等)对应着不同的字库。在输出汉字时,计算机都要先到字库中去找到相应的字形描述

信息,然后将字形信息输出。

每个汉字字形码在汉字字库中的相对地址称为汉字地址码。

2、数值(numbers)

在计算机中,数字采用二进制系统(binarysystem)表示,在这种表示方式下,一串0/1组合对应一个

数值。举例来说,数值125在计算机中(用1个字节表示)为01111101,如果要表示文本类型的“125”,

对应的ASCH序列为0110001,0110010,0110101。可见,同样一个数作为文本或数值类型,在计算机中

的表示形式会不相同。

一般来说,数值通过键盘输入到计算机中时,软件会保存对应的ASCII码,之后将它转换为二进制的

数值编码,这样才能对数值进行加减乘除或其他运算,当要输出时,再转换为ASCH码输出。这个过程看

起来非常繁琐,不过目前绝大多数软件都提供了相应的输入输出处理函数,一般用户可以非常方便地输入

输出数据,而根本不需要关注其细节。

日常应用中,人们习惯使用十进制,而计算机内使用二进制,那么它们之间是如何互相转换的?二进

制如何表示负号和小数点、二进制运算采用怎样的运算规则,这些内容我们将在下一小节中详细介绍。

3、图像(image)

当前,计算机中的图像主要有两种:位图(bitmapgraphic)和矢量图(vectorgraphic),

位图图像,亦称为点阵图像或绘制图像,是由称作像素(pixels)或图片元素(pictureelements)的单

个点组成的。像素的大小取决于分辨率(resolution)。一个图片可以被分割为1000个像素或者10000个像

素,显然后者能更好地显示图像,当然它也需要更多的存储空间来存放图像信息。对于一个黑白图像,每

个像素可以用一位二进制数表示(如0代表黑,1代表白);如果要表示彩色图像,每一个像素山红、绿、

蓝3个基色组合构成,因而需要更多的数位来表示。在图2-3中,一个黑白图像用4*8点阵表示,需要4

个字节来存储相关图像信息。

□:00011000

□:ooiiiloo

□;00111100

□00011000

图片1点阵表示

线性表示:000110000011110000H110000011000

图2-3位图表示黑白图像

如果是彩色图像,则每个像素的颜色用3个组成部分——红(R)、绿(G)、蓝(B)表示,而每个颜

色用1个字节来表示其强度,因而一个像素可能需要3个字节来表示颜色。也就是说,若上面的图片若为

彩色图片,则需要3x8x4=96个字节存储其信息。

.4.

大学计算机基础:第2章计算机硬件系统

当放大位图时,可以看见赖以构成整个图像的无数单个方块。扩大位图尺寸的效果是增多单个像素,

从而使线条和形状显得参差不齐。然而,如果从稍远的位置观看它,位图图像的颜色和形状又显得是连续

的。由于每一个像素都是单独染色的,您可以通过以每次一个像素的频率操作选择区域而产生近似相片的

逼真效果,诸如加深阴影和加重颜色。缩小位图尺寸也会使原图变形,因为此举是通过减少像素来使整个

图像变小的。同样,由于位图图像是以排列的像素集合体形式创建的,所以不能单独操作(如移动)局部

位图。

矢量图像,也称为面向对象的图像或绘图图像,在数学上定义为一系列山线连接的点。矢量文件中的

图形元素称为对象。每个对象都是一个自成一体的实体,它具有颜色、形状、轮廓、大小和屏幕位置等属

性。既然每个对象都是一个自成•体的实体,就可以在维持它原有清晰度和弯曲度的同时,多次移动和改

变它的属性,而不会影响图例中的其它对象。这些特征使基于矢量的程序特别适用于图例和三维建模,因

为它们通常要求能创建和操作单个对象。基于矢量的绘图同分辨率无关。这意味着它们可以按最高分辨率

显示到输出设备上。

4^音频(audio)

音频是指声音或音乐信号。我们知道音频信号是模拟信号,而计算机只能处理数字信号,所以要用计

算机处理音频,首先我们需要将连续的音频信号转换为离散的数字信号,其过程分为以下3步(见图2-4):

,W'=>愈厘善I10101111

模拟信号采样量化编码

图2-4音频表示

1)采样(Sampling)。以一定的时间周期对音频信号进行采样,将它转换为离散信号

2)量化(Quantization)。为每一个采样值指定一个量化值。例如,如果一个采样结果为30.9,而样本

取值范围为0~100间的整数值,从而该采样值被量化为31。

3)编码(Coding)。根据采样样本范围,将量化值转换为二进制数。如上面的31被编码后变为二进

制数OOOlllllBo

编码产生的二进制数顺序存入计算机以表示一段声音或音乐。

5、视频(video)

视频即及时连续播放的图像(也称为帧)序列。动画和视频信息是连续渐变的静态图像或图形序列沿

时间轴顺次更换显示,从而构成运动视觉的媒体。因而如果我们知道如何存储图像,也就理解如何存储视

频文件,视频中的每一幅图像都转换为对应的二进制串进行存储,她们的组合构成一个视频文件。要注意

的是当前的视频文件都采用某些标准进行压缩,否则信息量会非常巨大。有关视频压缩和相关技术我们也

将在后面的章节再作详细介绍。

2.1.2进制和进制转换

从前面的学习中我们已经知道计算机内使用二进制(binary)存储和处理信息,这是因为计算机的各

组成部分是由仅具有2个稳定状态的物理元件——电子电路构成的。然而对于计算机的使用者而言,长长

的二进制数据不容易记忆,而且读写起来非常容易出错。人们最熟悉和最常使用的还是十进制,因此,绝

大多数计算机的终端都能够接受和输出十进制的数字。此外,为理解和书写方便,还常常使用八进制和十

六进制,但它们最终都要转化为二进制后才能在计算机内部存储和加工。八进制和十六进制与二进制间的

转换非常方便,一位八进制对应三位二进制数,一位十六进制数对应四位二进制数,如二进制数

(110101101001)2转换为十六进制为(D69)-

下面我们分别介绍十进制(Decimal)、二进制(Binary)、八进制(Octal)、十六进制(Hexadecimal)

.5.

大学计算机基础:第2章计算机硬件系统

的主要特点及各种进制之间相互转换的方法。

1,四种进制

为了便于描述不同进制,首先引入2个基本概念——基数和权。

对任意进制而言,基数即这种进制中所使用的数字符号的个数。如十进制采用0~9十个数符,因而它

的基数为10;同样的道理,二进制的基数为2。为了表述方便,这里我们统一将各种进制称为R(R取2,

8,10,16)进制。根据上面的定义,R进制的基数就是R。

R进制数第i位的权为浦,这里约定整数最低位的位序号为0,则它对应的位权为R°,向左各位序号

分别为1,2,3……;小数点后第一位序号为-1,向右各位序号依次为-2,-3……。例如十进制数1234.567

各位的权分别为:

.

lo'

lo0

图2-5十进制数1234.567各位的权

下面,对4种进制的特征进行比较,见下表:

表2-2十进制、二进制、八进制、十六进制的特征

特征^\十进制二进制八进制十六进制

0,1,2,……9,A,

使用数符0,1,2,3,90,10,1,2,7

B,C,D,E,F

运算规则逢十进一逢二进一逢八进一逢十六进一

表示方式123,123D,(123)]01011101B,(1011101)24740,(474)89B4.4H,(9B4.4)i6

第i位的权id2,S'161

13122

666.66=6X102+6x10(1011.1)2=1X2+lX2(474)8=4X8+7X(9B4.4)I6=9X16+11

按权展开+6X100+6X10'+6X+1X20+1X2'=11.5D81+4X8°=256+56MX16'+4X16044X

2

I0-=(316)1016'=(2484.25)io

在表示各种进制的数据时,一般可以用在数字后面加上一个字母标识的方法进行区分,如二进制数后

面加上B(binary),八进制后面为O(octal),卜六进制数后使用H(hexadecimal);或者分别为数值加上

对应的进制作为下标。•般情况下,如果数字没有任何表示进制的标识,则说明它是采用十进制,换句话

说,十进制是默认形式,可以不特别标识。另外,在某些情况下,人们采用在数字前面加“X"(或"X”)

方式表示十六进数,如X0A2表示(A2),6;在数字前加“0”(或“0”、“0”)表示八进制数,如0142,

0142与(142)8等价。

2、二、八、十六进制转换为十进制

二进制、八进制、十六进制转换为十进制的方法可以归纳为:各位按权展开并相加。

【例2-1](1101.11)2、(123.4)8、(5F)16转换为十进制值分别为多少?

(1101.11)2=1X23+lX22+0X2'+lX2°+1X2'+lX22=8+4+1+0.5+0.25=(13.75)io

21

(123.4)8=1X8+2X8+3X8°+4X8-t64+16+3+0.5=(83.5)|0

(5F)l6=5X16'+15X16°=80+15=(95)l0

【例2-2](5F)>6,(123.4)8,(1010010)2,(84.5)io四个数中最小的是哪一个?

.6.

大学计算机基础:第2章计算机硬件系统

将前3个数值分别转换为十进制,结果分别为:

(5F)|6=95

(123.4)8=83.5

(1010010)2=82

显然二进制数(1010010)2最小

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

十进制转换为R(2,8,16)进制的方法可描述为:

整数部分用除R取余法转换,最后一个余数为整数最高位,倒数第二个余数为次高位,……第一个余

数为整数部分最低位;

小数部分用乘R取整法转换,即小数部分连续乘R,并取出乘积的整数部分,直到乘积小数部分为0

为止,各次所得积的整数部分即为所有二进制数由高到低位的值。

【例2-3]求(14.345)g(?)2

整数部分除2取余

2114

2L2余0最任渝

2D余1

211余1

0余1最重弓位整数部分(14)10=(1110)2

小数部分乘2取整

0.345X2=0.69UH整数0

0.69X2=1.38取出整数1

0.38X2=0.76取出整数0

0.76X2=1.52取出整数1

0.52X2=1.04取出整数1

0.04X2=0.08取出整数0

0.08X2=0.16取出整数0

有误差,根据精度适可而止(0.345),0=(0.01011000……)

至此,可以得到(14.345)io=(1110.01011000)2

【例2-4】求(172.65625)10=(?)16

整数部分除16取余

161172

16110余12(对应16进制数CH)

0余10(对应16进制数AH)

小数部分乘16取整

0.65625X16=10.5取出整数10(对应16进制数AH)

0.5X16=8.0取出整数8(小数部分为0,结束)

得到(172.65625)10=(AC.A8)|6

4,二进制数与八、十六进制数之间的转换

二进制数与八、十六进制数之间的转换比较简单,3位二进制数可以转换为一个八进制数或者相反一

个八进制数可以转换为3位二进制数;相似地,4位二进制数对应一个十六进制数。

表2-3四种进制间的对应关系

十进制十六进制八进制二进制十进制十六进制八进制二进制

000000088101000

111000199111001

.7.

大学计算机基础:第2章计算机硬件系统

222001010A121010

333001111B131011

444010012C141100

555010113D151101

666011014E161110

777011115F171111

当需要把八(或十六)进制数转换为二进制数时,只要把每位八(或十六)进制数码展开为3(或4)

位二进制码,并去掉整数部分最前面、小数部分最后面的“0”即可。

【例2-5】求(123.4)8=(?)2和(3.BA)„,=(?)2

(123.4)8=(001,010,011,100)2=(1010011.1)2

八进制转换为二进制,每一位数转换为3位二进制数据,然后去掉多余的“0”

(3.BA).=(0011.10111010)2=(11.1011101)2

十六进制转换为二进制,每一位数转换为4位二进制数据,然后去掉多余的“0”

将二进制数转换为八进制数的方法是:以小数点为中心,分别向前、后每3位分成一组,不足3位则

以“0”补足,然后将每组转换为一个八进制数。将二进制数转换为十六进制数的方法是:以小数点为中

心,分别向前、后每4位分成一组,不足4位以“0”补足,将每组转换为一个十六进制数。

【例2-6】求(10100101.01)2=(?)8=(?)16

(10100101.01)2=(010100101.Q10)2=(245.2)g

(10100101.01)2=(10100101.0100)2=(A5.4)16

5、/kM制与十六进制数之间的转换

如果要将一个八进制数转换为十六进制,一般采用二进制作为中介,即先将八进制数转换为二进制,

再将二进制数转换为对应的十六进制数。相反,如果要将十六进制数转换为八进制,一般也同样借助于二

进制。

2.1.3二进制数的原码、补码和反码表示

从上一节中,我们了解到一个数值类型的数据(如14.345)转换为二进制的方法,但是数据在计算机

中到底是如何存储的呢,还需要明确以下几个问题:

(1)数的长度——是不是“大数”用较多的二进制位表示,而“小数”用较少的位数?

例如整数2(10B)、250(11111010B)和5000(1001110001000B)在计算机中是不是分别用2位、8

位和13位二进制数表示呢?事实上,计算机中同一类型数据的长度常常是统一的,而且为8的整数倍,

不足部分用"0”填充。如2和250可以用一个字节(8位)表示为00000010B和11111010B,5000可以

用两个字节(16位)表示为0001001110001000B;对于更大的整数,如1234567可以用4个字节(32位)

来表示,而小数(根据其有效数据位数或精度)一般用4或8字节表示。

(2)确定数的符号——负数怎样表示呢?

用数的最高位(左边第一位)来表示数的符号,并约定以“0”代表正数,以“1”代表负数。假设

X=10011001B,Y=00110111B,Z=10011B都是一个字节(8位)的带符号数,则显然X是负数,Y是正数,

而Z由于没有写成8位二进制的形式,无法判定是正数还是负数。

(3)小数点的表示——对于任意一个十进制小数,我们可以把它转换为对应的二进制数(由于数位

长度的限制,有时可能带入舍入误差),但是小数点怎样表示呢?

在计算机中表示实数时,小数点的位置总是隐含的。若小数点位置是固定的,称为定点表示法;若小

数点位置可变,称为浮点表示法。

在这一小节里,我们先讨论正负号的表示问题。对于数值55和-55,我们将它们转换为二进制数,并

.8.

_________________________________大学计算机基础:第2章计算机硬件系统

保留原来的号,就得到数据的真值+110111、-110111,问题是计算机内部如何表示符号呢?

解决方法是用数值的最高位为1表示为0表示“+”,经过“符号数值化”后得到数据的机器数。由

真值变成机器数常见的有四种表示方法:原码表示法,反码表示法,补码表示法,移码表示法,其中移码

主要用于表示浮点数的阶码E,以利于比较两个指数的大小和对阶的操作。

什么是原码、补码和反码?

用数据的第一位表示数的符号,用其后的各位表示数的绝对值,这种方法即原码表示法。假设在计算

机中,分别用一个字节的原码表示法来表示55和-55,对应的编码为00110111和10110111。注意,因为数

据的长度为一个字节(8位),所以除最高位用来表示符号外,数值不够7位应在左边补0。

在执行加减运算时,两个操作数既可能是正数,也可能是负数,所以原码运算时常伴随许多判断。例

如两数相加,若符号不同,实际要做减法;两数相减,若符号相异,实际要做加法。其结果是增加了运算

器的复杂性和运算时间。为了简化负数的加减运算,人们提出了“补码”、“反码”等编码方法。补码运算

的主要优点是通过对负数的适当处理,把减法转化为加法。不论求和求差,也不论操作数为正为负,运算

时一律只做加法,从而大大简化加减运算。

假设带符号整数X在内存中用N位二进制数(xn.,x»2xn.3……x3x2x,Xo,其中七G{0,1})表示,若

X>0,则

[X]M=凶反码=[XL*0Xn-2Xn-3...X3X2XiX0(符号位Xn.1=0)

即正数的原码、反码、补码相同。

若X<0,则

[X]gR=lXn-2Xn.3X3X2XiXo(符号位Xn-1=1)

[X]RW=1…“对而两天([X].符号位不变,其余各位取反,即0变成1,1变成0)

[X]补N=[X]反码+1

【例2-7】已知某计算机中用1个字节表示整数,求±50、±126、±0的原码、反码、补码。

转换方法:

1)先分别求每个数的真值;

2)将数值扩充为7位,符号位转换为0/1,得到8位的原码

3)正数的原码、反码、补码相同,可以直接得到所有正数的反码、补码;

4)根据前面的公式,求负数的反码和补码

表2-4真值、原码、反码和补码间的转换实例

十进制数真值原码反码补码

50+110010001100100011001000110010

-50-110010101100101100110111001110

126+1111110011111100111111001111110

-126-1111110111111101000000110000010

+0+0000000000000000000000000000000

-0-00000001000000011111111100000000

注意:1.在机器数表示中,“0”是个特例。“+0”和“9”的原码、反码不同,但是补码都是00000000。

2.从上面的计算中,我们可以发现一个规律:

[X](w+[-X]w.|=100000000=0(最高位溢出,结果为0)

所以,若X>0,则可以用100000000-凶原的的方法求[-XL网

【例2-8]设[X[卜玛=00010001,[丫卜网=10010000。求X,Y的值是多少?

由符号位可以确定,X为正数,Y是一个负数。

.9.

大学计算机基础:第2章计算机硬件系统

[X]导泗=[XbbH=00010001,X=10001B=17

[Y]Bei=[[Y]HB]朴州=[10010000卜网=11110000,Y=-ll10000B=-112

2.1.4定点和浮点数表示

接下来,讨论第三个问题——小数点的表示。在计算机中表示实数时,小数点的位置总是隐含的,即

数据中不会显式的出现小数点,根据小数点的位置是否固定,分为定点和浮点两种表示法。

1、定点(FixedPoint)表示法

在定点表示法中,小数点的位置一旦约定,就不再改变。根据约定小数点位置的不同,又可以将定点

数分为定点整数和定点小数。前者的小数点位置约定在最低数值位的后面,用于表示整数;后者小数点位

置约定在最高数值位的前面,用于表示绝对值小于I的纯小数。

【例2-9】假设某计算机使用的定点数长度为2字节,其中前一个字节的最高位表示数的符号。求用

定点数表示整数(732)io。

首冼,将十进制数转换为对应的二进制数(732)10=(1011011100)2

由于数据长度为16位(2字节),故前面不够16位的部分补充“0”;另外,最高位D6为0,表示这

是一个正数,小数点的位置在最低位5的最后面。

DisDI4DI3D,2DUDIOD9D8D,D6D5D4D3D,D[D0

数符数值部分小数点位置

【例2-10】同上计算机,求用定点数表示纯小数(一0.6876)1。。

先将十进制纯小数转换为二进制小数(0.6876)io=(0.10110000000001101-)2,由于要表示的数为

负数,所以符号位Dis为1,小数点的位置在DM与Du之间。另外,0.6876转换的二进制数为无限小数,存

储时只能截取前15位,第16位以后略去。

D”DI4DUD12DHD,OD9DgD7D(,D5D4D3D2D,DO

00000000011

数符小数点位置数值部分

由上面的例子可以看出,用2字节表示带符号定点整数,假设符号为0(非负数),则数据的取值范围

0000000000000000B-0111111111111111B,转换为10进制数为0~2巴1;同样设符号位为0,2字节表示

非负定点小数的范围为0.000000000000000B~0.111111111111111,即0~1-2一%

2、浮点(FloatingPoint)表示法

在定点数的表示法中存在着一个问题就是难以表示数值很大的数和数值很小的数。这是因为小数点固

定在某一位置上,数据的表示范围这受到了限制,从前面的介绍中可以知道,2字节能表示的最大正整数

为2,(32767),即使扩大到4个字节,能表示的最大整数不过23」(2,147,483,648)。为了表示更大范

围的数据,数学上通常采用科学记数法,将数字N表示为的形式,如用科学计数法表示十进制

数12345670(X)0000,记做1.234567X102将这种表示方法引入二进制计数,任何一个二进制数N都可以

写成N=MX2J式中,M称为尾数(mantissa),表示数据的有效值部分,它的位数决定了N的精度;E

称为阶码(exponent),实际上表示的是小数点的相对位置,它的位数决定N的表示范围。在这种表示方法

中,因为小数点的位置是可变的,或者说是“浮动”的,因此称为浮点数。

对于二进制数1000111.0101,可以表示成1.0001110101X26、0.10001110101X2,或者10001110101X

2”等多种形式,为了方便计算,我们需要一个统一的表示标准,解决方法是采用规格化形式——规定小数

.10.

大学计算机基础:第2章计算机硬件系统

点的位置应在第个“1”的右边,所以上面的二进制数规格化表示形式为+26X1.0001110101。当浮点数

规格化后,我们只需要存储三个部分:符号、阶码和尾数(由于尾数的整数部分一定是1,所以只需要存

储它小数点后面部分的数值,如前例中,尾数只需要存储0001110101,而忽略前面的1)。

为便于软件移植,电器和电子工程师学会(IEEE)为浮点数的表示设定标准,其中单精度(float)和

双精度(doublefloat)浮点数的表示格式如下图。

史7的移码J

曲|8位||23^"

符号阶码尾数

A.单精度数(float)B.双

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论