《计算机硬件基础》第2章 计算机中数据的表示_第1页
《计算机硬件基础》第2章 计算机中数据的表示_第2页
《计算机硬件基础》第2章 计算机中数据的表示_第3页
《计算机硬件基础》第2章 计算机中数据的表示_第4页
《计算机硬件基础》第2章 计算机中数据的表示_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

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

文档简介

第2章计算机中数据的表示

现代计算机有数字电子计算机和模拟电子计算机两

大类。目前大量使用的计算机属于数字电子计算机,它

只能接受0、1形式的数字数据。但是现实由计算机处理

的信息形式各种各样,既有文字、数字、图形、图象等

静态信息,亦有声音、动画、活动影像等动态信息,无

论哪种形式的信息,现代计算机技术的发展,已经能很

方便地把这些信息转换成0、1组合的数字数据形式输入

计算机,进而由计算机进行存储、处理。本章将介绍计

数制及其相互转换、数值数据、非数值数据信息的表示

以及阐述计算机中的数据校验。

2.1计数制及其相互转换

1.进位计数制

所谓进位计数制是指数的制式,是人们利用

符号来计数的一种科学方法,它是指由低位向

高位进位计数的方法。进位计数制有很多种,

如:十进制、十二进制(如十二个月为一年)、

六十进制(如分、秒的计时)等等。但在微型

计算机中常用的数制就是二进制。

数据无论使用哪种进位计数制,都包含两个

基本要素:基数与位权。

1)数值的基数

一种进位计数制允许选用基本数字符号的个

数称为基数。

例如最常用的十进制数,每一位上只允许选

用0、1、2、3、4、5、6、7、8、9共10个不同

数码中的一个,则十进制的基数为10,每一位

计满10时向高位进1。

因此,在j进制中,基数为j,包含0、1、

2...卜1共j个不同的数字符号,每个数位计满j就

向高位进1,即“逢j进一”。

2)数值的位权

在一个数中,每个数字符号所表示的数值等

于该数值符号值乘以与该数字符号所在位有关

的常数,此常数就是“位权”,又简称“权”。

它是计数制每一位所固有的值。位权的大小是

以基数为底、数字符号所在的位置序号为指数

的整数次塞。

注意,对任何一种进制数,整数部分最低位

位置的序号是0,位置每高一位,序号加1,而

小数部分位置序号为负值,位置每低一位,序

号减1O

例如,十进制数的百分位、十分位、个位、

十位、百位上的权依次是10的-2次方、"次方、

0次方、1次方、2次方。

>3)一个j进制数Nj按权展开的多项式和的一般

装达式

AAAA

Nj=Kn-rjn-1+Kn-2Jn-2+・・・・・・+Krj1+Ko-jO+

K-rjA-1+・・・・・・+K-mjA-m

例如,十进制数34527按权展开的多项式和的

一般表达式为:

345.27=3X10A2+4X1OA1+5X10A0+2X10A-

1+7X10A-2

在上式中,10为基数,10上、107、10八0、

10八-1、10八-2为各位上的位权。

2.常见的几种进位计数制

1)十进制

十进制的基数为10,只有0,1,2,3,4,5,

6,7,8,9,共10个数码(数字符号)。进位

计数原则为“逢十进一”。十进制各位的位权是

以10为底的累O

2)二进制

二进制的基数为2,只有0,1共2个数码(数

字符号)。进位计数原则为“逢二进一”。二进

制各位的权是以2为底的哥。

»二进制数的特点:

①技术上容易实现

②二进制运算规则简单

加法规则减法规则乘法规则

0+0=00-0=00X0=0

0+1=11-1=00X1=0

1+0=11.0=11X0=0

1+1=0且进位10-1=1且借位11X1=1

③与逻辑变量。与1一致

④与十进制数转换容易

3)八进制

八进制的基数为,只有0,1,2,3,4,5,

6,7共8个数码(数字符号)。进位计数原则

为“逢八进一”。八进制的权为以8为底的哥。

4)十六进制

十六进制的基数为16,只有0,1,2,3,4,

5,6,7,8,9,A,BC,D,E,F共16个数

码(数字符号)。其中,A、C、D、E、F

分别表示10、11、12、13、14、15o进位计数

原则为“逢十六进一”。十六进制的权为以16

为底的塞。

»十六进制数的特点:用十六进制既可简化书写,

又便于记忆。

进制数的表示既可以用数字表示,也可以

用字母表示。

B——二进制

0——八进制

D——十进制

H——十六进制

注意,通常用Q表示八进制而不用字母0,

目的是为了避免将。字母误认为是数字0。在

表示十进制数时,数制符号(D或10)可以省

略。彳言

例如:

十进制数23,可表示为23D或23»或23

二进制数110110.01,可表示为110110Q1B或

110110.01(2)

3,数制的转换

⑴二进制数和十进制数间的转换

1)二进制数转换成十进制数

只要把要转换的数按权展开后相加即可。例如:

II0I0.0IB=IX2八4十IX2八3十IX2A1十IX2A-2

=26.25D

2)十进制数转换成二进制数

其转换过程为上述转换过程的逆过程,但十进

制整数和小数转换成二进制的整数和小数的方

法是不相同的。

①十进制整数转换成二进制整数的方法有很

多,最常用的是“除2取余法”,即除2取余,

后余先排。

>例:将十进制数129转换成二进制数。

解:把129连续除以2,直到商数为0,余数

小于2,其过程如下:

2129...........最低位

264................余。

2|32_................余。

2巴.....余。

2L.....余0

2回……….....余0

2!2.....余。

最高位

2L……….....余1

0

把所得余数按箭头方向从高到低排列起来便

可得到:129=l0000001B

②十进制小数转换成二进制小数通常采用

“乘2取整法”,即乘2取整,整数顺排,直到

所得乘积的小数部分为。或达到所需精度为止。

例:将十进制数0.375转换成二进制数。

解:把0.375不断地乘2,取每次所得乘积

的整数部分,余下的小数部分继续乘2,直到

乘积的小数部分为0,其过程如下:

0.375

X2最高位

0.750...................取整数部分:0

0.750

X2

1.500...................取整数部分:1

0.500

X2„

1.000...................取整数部分:1最低位

把所得整数按箭头方向从高到低排列后得到:

0.375=0.011B

注意:对同时有整数和小数两部分的十进制数,其转

换成二进制数的常用方法为:把它的整数和小数部分分开

转换后,再合并起来。但应注意别忘了在整数部分和小数

部分之间加小数点。

>(2)十六进制和十进制数间的转换

1)十六进制数转换成十进制数

方法和二进制数转换成十进制数的方法类似,

即把十六进制数按权展开后相加。例如:

5F7A.1H=5X16A3+15X16A2+7X16A1+10X16

A0+1X16A-1=24442.0625

2)十进制数转换成十六进制数

①十进制整数转换成十六进制整数采用“除16

取余法”,即除16取余,后余先排。

例如:将十进制数3938转换成十六进制数。

解:把3938连续除以16,直到商数为0,余数小

于16,其过程如下:

163938...................余2最低位

16246...................余6

1615...................余15(F)最高位

0

即得:3938=F62H

>②十进制小数转换成十六进制小数采用“乘

16取整法”:乘16取整,整数顺排,直到所

得乘积的小数部分为。或达到所需精度为止。

例如:将十进制数0.566743转换成十六进制

数。(小数点后取3位有效数字)

>解:把0.566743连续乘以I6,直到所得乘

积的小数部分达到所需精度为止,其过程如下:

0.566743

X16

最高位

9.067888取整数部分:9

0.067888

X16

取整数部分:

1.0862081

0.086208

X16

取整数部分:1-

1.379328取低位

即得:0.566743M0.911H

同理:对同时有整数和小数两部分的十进制数,其

转换成十六进制数的方法为:把它的整数和小数部分

分开转换后,再合并起来。但应注意别忘了在整数部

分和小数部分之间加小数点。

>(3)二进制和十六进制数的转换

1)二进制数转换成十六进制数

其转换可采用“四位合一位法”。即:从

二进制数的小数点开始,向左或向右每四位为

一组,不足四位以0补足(整数部分不足4位,

左边补0;小数部分不足4位,右边补0),然

后分别把每组用十六进制数码表示,并按序相

连即可。

例如:将1010110011010L1010010111001

转换成十六进制数。

0010101100110101.1010010111001000B

2B35.A5C8H

即得:10101100110101.1010010111001B=2B35.A5C8H

注意:别忘了在整数部分和小数部分之间加小数点。

>2)十六进制转换成二进制数

其转换方法是把十六进制数的每位分别用四

位二进制数码表示,然后把它们连成一体。

>例如:将十六进制数1A7.4C5H转换成二进

制数。

解:1A7.4C5H

000110100111.010011000101B

即得:1A7.4C5H=000110100111.010011000101B

注意:别忘了在整数部分和小数部分之间加小数点。

十进制数与任意进制数之间的相互转换和

十进制与二进制之间的相互转换方法类似,本

书就不在介绍,读者可以考虑一下。还可以考

虑一下八进制数与二进制和十六进制之间怎样

转换。

2.2计算机中数值数据的表示

1.机器数和真值

机器数一■存储在计算机中的二进制数,数连同

符号数字化,并以二进制编码形式存储。

而机器数代表的数值称为机器数的真值。

注意:机器数和真值是完全不同的两个概念,

它们在表示形式上也是不同的。机器数的最高位

是符号位,除最高位后的其余位才表示数值。而

真值没有符号位,它所有的数位均表示数值。

要完整地表示一个机器数,应考虑机器数的

符号表示、有效值范围、小数点表示三个重要因

素。

(1)机器数的符号表示

用二进制数的最高有效位约定为符号位(符号

位只占1位),其它位表示数值。符号位为。表示

正数,为1表示负数。小数点不占数位(隐含)。

例如:

真值:N1=+0.1001B,N2=-0.1001B,

N3=+1001B,N4=-1001B

对应机器数为:

N1=0.1001B,N2=1.1001B,

N3=01001B,N4=11001B

(2)机器数的有效值范围

机器数的数值范围,由计算机存放一个基

本信息单元长度的硬件电路所决定。

基本信息单元的二进制位数称为字长,若

字长为16位,所表示一个无符号整数范围为

OOOOH-FFFFH(十进缶2〜65535);若表

示一个带符号数,则最高位为符号位,其他

位表示数值,它所表示的整数范围为・

7FFFH〜+7FFFH。

(3)机器数的小数点表示

在计算机中,用二进制表示实数的方法有两

种,即定点数和浮点数,小数点不占用数位。

1)定点数

所谓定点数,即小数点在数中的位置是固

定不变的,约定小数点隐含在一个固定位置上。

定点数表示通常又有两种方法。

方法1:约定小数点隐含在有效数值位的最

高位之前,符号位之后,计算机中能表示的数

都是纯小数,该数又被称为定点小数。

方法2:约定小数点隐含在最低位之后,计

算机中能表示的数都是整数,该数又被称为定

点整数。

>两种定点数的表示如下图所示:

符号位数值部分符号位数值部分

定点小数的小定点整数的小

数点位置数点位置

A2)浮点数

为了在位数有限的前提下扩大数值的表示范

围,又保持数的有效精度,计算机采用浮点表

示法。浮点表示法与科学计数法相似。浮点数

是指一个数的小数点的位置是浮动的,不是固

定的。

计算机中浮点表示是要把机器数分为两部分,一

部分表示阶码(指数,用有符号整数表示),另一

部分表示尾数(数值的有效数字部分,一般用定点

小数表示),阶码和尾数均有各自的符号位。即任

意一个二进制数N可以写成下面的形式:

N=±d2A±P

d是尾数,一般用定点二进制纯小数表示,是数

值的有效数字部分。d前面的“土”表示数的符号,

用尾数的最高位表示,此符号常常称为数符或尾符;

P称为阶码(或阶数),它前面的符号称为阶符,表

示阶码的符号,用阶码的最高位表示。阶码和阶符

指明小数点的位置,小数点随着P的符号和大小而浮

动。

>浮点数在机器中的一般表示形式如下图所示:

pd

阶符阶码数符尾数

1位m位1位n位

>2.机器数的表示

人们对机器数进行了各种编码,其中最常

用的编码有原码、反码和补码。

>(1)原码表示法

设X的有效数码为X1X2…Xn-i,其n位原码的定

义如下:

当O0X<1时,[X]原=0.XiX2…Xn.1

当」VX0O时,[X]jg=1.XlX2-Xn.1

当O0XV2n.1且为整数时,[X]原=0X1X2…Xn.1

当・2n.12XS0且为整数时,[X]原=1x1X2…Xn-1

其中,[X]原为机器数的原码,x为真值,n为机

器的字长。

A例如,

[+O]M=OOOOOOOOB[<0]M=10000000B

[+1]原=00000001B[-1]M=10000001B

[+127]M=01111111B上127]原

[+0.111011B]原=0.1110110B[•0.111011B]原

由此可以看出:在原码表不中,0有+0和・0

之分;在原码表示中,除符号位外,其余n・1

位表示数的绝对值。原码表示定点整数的范围

是・(2际)1)〜2品小1,定点小数的范围是■

(1-2A-(n-1))〜1・2八・(n-1)o如n=8时,定

点整数的原码表示范围为・127〜+127。

(2)反码表示

设X的有效数码为XiX2.・.Xn」,其n位反码的

定义如下:

当XNO时,凶反二0X1X2…Xn.1

当XWO时,凶反二1灯X2…Xn.1

例如,n=8

[+O]s=OOOOOOOOB[-0]反=11111111B

[+1]反=00000001B11]反=11111110B

[+127]反=01111111B[-127]反=10000000B

由此可以看出:正数的反码与原码相同,

负数的反码是保持原码的符号位不变,其余数

值按位求反即可得到;在反码表示中,。也有

+0和之分;在反码表示中,最高位仍为符号

位,其余n・1位表示数的绝对值或与数值相关

的信息。

反码表示定点整数的范围为-(2品+1)〜2%.

A

1-1,定点小数的范围是-(1-2.(n-1))〜1-2八-

(n-i)o当n=8时,定点整数的反码表示范围为-

127〜+127。

反码的反码为对应真值的原码,即:[[X]反]

反二凶原。

>(3)补码表示法

当0WXV1时,[X]#=[X]s

当-1WXW0时,凶补=2-IX|

当0欧〈2%1且为整数时,凶补二凶原

当・2An-1〈XW0且为整数时,区]补=2"-|XI

A例如,n=8

[+0]#=00000000B[-0]#=00000000B

[+1]#=00000001B[-1]#=11111111B

[+127>=01111111B[-127]#=10000001B

由此可以看出:正数的补码与原码相同,

负数的补码等于它的反码加1;在补码表示中,

。没有+0和-0之分;在补码表示中,最高位仍

为符号位,其余n・1位表示数的绝对值或与数

值相关的信息。

补码表示定点整数的范围是-2品-1〜2品十1,

定点小数的范围是-1〜1-2八・(~)当n=8时,定

点整数的补码范围为・128〜+127。

补码的补码为对应真值的原码,即[[X]补]补

二凶原

A3.机器数的运算及溢出判断

1)机器数的运算

>在计算机内,一般采用机器数的补码加法

运算。其运算原则为:

[x+y]#=[x]补+[y]补

[x-y]#=[x]#+[-y]#

已知[丫]补求卜丫]补的方法:将[丫]补各位按位取

反(包括符号位)末位加1。

A例如:

已知:X=+0001100BY=+0000101B

求:X+Y和X-丫

解:[X>=00001100B[Y]#=00000101B

[-Y]#=11111011B

①计算X+Y

00001100凶补

+)00000101⑶补

00010001[X]补+[Y]补

即:[X]#+[Y>=00010001B

X+Y=+0010001B=+17

»②计算X-Y

00001100凶补

+)11111011卜Y]补

100000111凶补+卜¥]补

自然丢失.

即:凶补+[・Y]补=00000111B

X-Y=+0000111B=+7D

>2)机器数运算的溢出判断

溢出…超出了计算机表示数的范围。

在运用补码运算的两个公式时,要注意公式成立有

个前提条件,就是运算结果不能超出机器数所能表示

的范围,否则运算结果不正确,按“溢出”处理。

例如:如果机器字长为8位,贝IJ-1280N0+127,计算

(+64)+(+65)

+6401000000

++65+)01000001

+12910000001—->-127

为什么(+64)+(+65)其结果值会是・127?这个

结果显然是错误的。究其原因是:(+64)+(+65)

=+129>+127,超出了字长为8位所能表示的最大值,

产生了“溢出”,所以结果值出错。

在二进制数的计算中,我们还可以采用以下两种

方法判断是否发生“溢出”。

(1)单符号位检测法

其具体方法为:当加数与被加数符号相同时,若

运算结果的符号与它们不同,则表示溢出;若运算结

果的符号与它们相同,则表示没有溢出。而当加数与

被加数符号不同时,运算结果不会溢出(前提是:计

算机能够表示加数和被加数)。

(2)双符号位检测法

双符号位检测又称变形码检测,其具体方法为:

对参加运算的数均采用两个符号位,负数的符号位用

11表示,正数的符号位用00表示,符号位和数值位一

起参加运算:若运算结果的两个符号位代码不同,则

表示溢出;若运算结果的两个符号位代码相同,则表

示没有溢出。

A关于溢出判断,我们可以总结如下:

a.相加的两个数均为正数,则其和一定为

正数。若计算结果为负数,则一定发生了溢

出。

b.相加的两个数均为负数,则其和一定为

负数。若计算结果为正数,则一定发生了溢

出。

c.相加的两个数一个为负数、一个为正数,

则其和可能为负数,也可能为正数。其运算

不会发生溢出(前提:计算机能表示这两个

数)。

»例如,已知:X=-0.1001BY=-0.1011B

>求:X+Y

[Y>=1.0101B

>解:[X>=1.0111B

r补

L

1.0111

X1

K

r补

L

>+)1.0101补

X]

>10.1100

>自然丢失——

>即:[X]补+[Y]补=0.1100B

>用单符号位检测法可知:发生溢出,此计

算结果是不正确的。

A例如,已知:X=+0.1010BY=+0.1101B

>求:X+Y

>解:[X]#=00.1010B[Y>=00.1101B

r

家k

00.1010L—

Xr]

未L

>+)00.1101YL]r

r

、L

X]不

>01,0111LT

>即:[X]#+[Y]#=01.0111B

>用双符号位检测法可知:发生溢出,此计

算结果是不正确的。

23计算机中非数值数据的表示

>1.二一十进制数字编码

二一十进制即用二进制编码来表示十进

制数,二进制是表示形式,本质是十进制。

它又称为BCD码。

其编码规则为:

温馨提示

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

评论

0/150

提交评论