《微型计算机原理与接口技术》课件第2章 2_第1页
《微型计算机原理与接口技术》课件第2章 2_第2页
《微型计算机原理与接口技术》课件第2章 2_第3页
《微型计算机原理与接口技术》课件第2章 2_第4页
《微型计算机原理与接口技术》课件第2章 2_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

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

文档简介

2.1计算机中的数制在人们应用各种数字符号表示事物个数的长期过程中,形成了各种计数制。进位计数制就是一种常用的计数方法,微型计算机中常用的进位计数制有十进制、二进制和十六进制三种。

1.十进制数

十进制是大家很熟悉的进位计数制,它有0,1,2,3,4,5,6,7,8和9共十个数字符号。数字符号的个数称为基数,故十进制的基数为10。十进制数通常具有如下两个基本特征:

(1)具有十个不同的数字符号,即0,1,2,3,4,5,6,7,8和9。

(2)在加法中采用逢十进位的原则。任何一个十进制数都可以展开为幂级数形式。一个有n位整数和m位小数的十进制数N可以表示为

式中,指数10k在数学上称为权,10为它的基数;i表示数中任何一位,是一个变量;ai表示第i位的数码,可取0~9之间的任意数字字符;n为该十进制数整数部分的位数;m为小数部分的位数。整数部分中每位的权的幂是该数所在的位数减1;小数部分中每位的权的幂是该位小数的位数。

2.二进制数

以2为基数的计数制叫做二进制计数制,简称二进制数。二进制数通常具有如下两个基本特征:

(1)具有两个不同的数字符号,即0和1;

(2)在加法中采用逢二进位的原则。一个有n位整数和m位小数的二进制数N可以表示为

式中,i表示数中任何一位,是一个变量;ai表示第i位的数码,可取0或1;

n为该二进制数整数部分的位数;m为小数部分的位数。

例如:计算1102.1101的实际值

(1101.1101)2=1×23+1×22+0×21+1×20+1×2-1

+1×2-1+1×2-2+0×2-3+1×2-4=(13.8125)10

3.十六进制数

在计算机中,最常用的是十六进制数。一个十六进制数也有两个基本特点:

(1)具有16个数字符号,即0~9和A~F;

(2)在加法中采用逢16进位的原则。

十六进制数是由排列起来的0~F组成,每一个数位有一个权与之对应,小数点左边各数位的权为16的正次幂,小数点右边各数据位的权是16的负次幂。

例如:

(FF0E)16=15×163+15×162+0×161+14×160=(65294)10但是,在机器中,数仍以二进制表示,这是由物理器件本身决定的。之所以用十六进制数表示,是因为4位二进制数可用1位十六进制数表示,这样人们看起来更方便、易懂。表2-1给出了二进制数与十六进制数、十进制数的对应关系。

为了区分数的进制,常用B表示二进制数,用H表示十六进制数,D表示十进制数,例如:

4.数制的转换

1)二进制与十六进制的转换

将二进制数转成十六进制相当方便。整数部分从小数点向左,每4位一份,组成1位十六进制数,不足4位的前面补0;小数部分由小数点向右,每4位一份,不足4位的后面补0,每4位用相应的十六进制数代替,即转换成十六进制数。例如:若将十六进制数转换成二进制数,则只要把每l位十六进制数用相应的4位二进制数代替即可。例如:

(8BC.7E)16转换为(100010111100.01111110)2

2)二进制与十进制转换

将二进制转换成十进制的方法是求此数的幂级数多项式的值,如:

11010.01B=1×24+1×23+1×21+1×2-2=26.25

即,将二进制数按权展开求和。

下面介绍将十进制转换成二进制的方法。转换时对整数部分和小数部分要分别对待,整数部分的转换方法是除2取余法,小数部分的转换方法是乘2取整法。例如:将十进制数206转换成二进制数。

转换结果为(11001110)2。这里采取的方法是用十进制数连续除以2,直到商为0时结束,最先得到的余数为二进制数的最低位,最后得到的余数为二进制数的最高位。小数部分的转换是用2去乘它,取乘积的整数部分为转换后的二进制小数的最高位,再用2去乘上一步乘积的小数部分,再取整数部分为二进制小数低一位的数字。重复乘2直到积为零或已达到二进制小数位数的要求,转换过程即完成。

例如:将十进制数0.385转换成二进制小数。转换结果为(0.0110001)2。最后的积仍不为零,但只要达到要求的位数也就可以了,因为大部分小数是永远也不会满足乘积为零的。

若是既有整数又有小数的十进制数,则先分别进行转换,再把结果合起来就得到最后结果。

例如:将十进制数206.385转成二进制数。前面已经做过:

(206)10 = (11001110)2,(0.385)10 = (0.0110001)2

那么

(206.385)10=(11001110.0110001)2

5.二进制数的算术运算

l)加法运算

二进制加法运算规则为:

0+0=0

0+1=1

1+0=1

1+1=0(并向高一位产生进位,结果为10。)

例如:

2)减法运算

二进制减法运算规则为:

0-0=0

0-1=1(向高位借位)

1-0=l

1-1=0

例如;

3)乘法运算

二进制乘法运算规则:

0×0=0

0×1=0

1×0=0

1×1=0

例如:

4)除法运算

二进制除法与十进制除法类似,由上商、减法逐步完成。

例如:

6.二进制数的逻辑运算

常用的二进制数的逻辑运算有“与”、“或”、“异或”及“非”运算四种。在组成表达式时,可分别用符号“AND”、“OR”、“XOR”及“NOT”作为运算符。二进制数的逻辑运算只按位进行运算。

一位二进制数的运算规则如下:

(1)“与”运算的规则为:

0AND0=0

0AND1=0

1AND0=0

1AND1=1

(2)“或”运算的规则为:

0OR0=0

0ORl=1

1OR0=1

1OR1=1

(3)“异或”运算的规则为:

0XOR0=0

0XOR1=1

1XOR0=1

1XOR1=0

(4)“非”运算的规则为:

NOT0=1

NOT1=0

多位二进制数进行逻辑运算时,利用一位二进制数运算规则按位进行运算。2.2计算机中数据的表示方法在计算机中能直接表示和使用的有数值数据和符号数据两大类。数值数据用来表示数量的大小,并且还带有表示数值正负的符号位。符号数据又称非数值数据,用于表示一些符号标记,包括英文大小写字,数字符号0~9等,汉字和图形信息也属于符号数据。由于计算机中任何数据都采用二进制编码形式,因此讨论数据的表示方法,就是讨论它们在计算机中的组成格式和编码规则。

1.带符号数的表示方法

在计算机中,数值也会有正、负之分,通常用一个数的最高位定为符号位表示数值的符号。若字长为8位,则D7位为符号位,D6~D0为数字位。符号位用0表示正,用1表示负,如:

x=(01011011)2=+91

x=(11011011)2=-91

这样,连同一个符号位一起作为一个数,称为机器数,而它的数值称为机器数的真值。为了运算方便,在机器中带符号数有三种表示方法,即原码、反码和补码。

1)原码

按上所述,正数的符号位用0表示,负数的符号位用1表示,这种表示方法称为原码。

例如,x=+100[x]原

=01100100

y=-100  [y]原

=11100100

其中,最高位为符号位,后面7位为数值。在原码表示中,+100和-100数值位相同,符号位不同。

原码表示简单易懂,但若两个异号数相加就要做减法,为了把减法运算转换为加法运算,引进了反码和补码。

2)反码

正数的反码表示与原码相同,最高位为符号位,用0表示正,其余位为数值位。

例如:[+66]反

=01000010

[+6]反

=00000110

负数的反码表示为它的正数“按位取反”(连同符号位)。

例如:[-6]反

=11111001

[+ 127]反

=01111111

[-127]反

=10000000

[+0]反

=00000000

[-0]反

=11111111负数的反码表示与原码有很大区别,最高位仍为符号位,负数仍用1表示,但数值位不同。以8位二进制反码表示的数有以下特点:

(1) 0有两种表示方法;

(2)能表示的数值范围为 +127~-127;

(3)一个带符号数由反码表示时,其最高位D7为符号位,0表示正数,1表示负数,后7位数为数值。对于负数,一定把它“按位取反”才可得到它的二进制值。

例如:[10101100]反 的最高位为1,所以为负数,其值的大小,将数值位“按位取反”,这个用反码表示的数为

-1010011=(-83)10

3)补码

正数的补码表示与原码相同,而负数的补码表示为它的正数“按位取反”(包括符号位),并且在最低位加1而形成。

例如:[+6]补

=00000110

[-6]补

=11111001+1

    =11111010

[+127]补 =01111111

[-127]补 =10000001

[+0]补

=00000000

[-0]补

=00000000

8位带符号数的补码表示有如下特点:

(1) [+0]补

=[-0]补

=00000000;

(2) 8位二进制补码所能表示的数值范围为+127~-128;

(3)用补码表示的二进制数的最高位为符号位,当符号位为0时表示为正数,其余7位为此数的二进制值;当符号位为1时表示为负数,其余几位不是此数的二进制值,应把它“按位取反”,且在最低位加1,才是其二进制值。

例如:[10101100]补的最高位为1,说明是负数,若求其值,则按位取反为01010011,再加1为01010100,其值为

-01010100=-(84)10

表2-2所示为各种码制下的数的表示法。当负数采用补码表示时,可以把减法转换成加法。

例如:x=64-14=64+(-14)

[x]补

=[64]补

+[-14]补

[64]补

=01000000

[-14]补

=11110010

[x]补为将二者相加由于字长只有8位,故当有向更高位进位时会自然丢失,得

[x]补

=00110010=(50)10

上述实例说明,引入补码概念之后,数的减法运算可以用加法运算代替。在计算机中,凡带符号的数一律用补码表示,无论是参与运算的数还是运算结果,都是采用补码形式。

设想一个环形跑道上均匀地放好256把椅子,椅子编号为0~255。现在有人处于64号椅子上,如果要到50号椅子上去,他可以向回走过14把椅子,也可以向前走,经过65号直到255号,接着又从0号椅子开始走到50号椅子。这样,他走过了242把椅子。可以看出,-14和 +242效果相同,因此,256称为模,它是这个系统里所能表示的最大的数,而-14和242则互为补数。-14的补码可以从28-14得到。这个例子就相当于,对一个8位二进制数,当用补码来示时,它的模为28=256,而当从某数中减去一个小于模的数时,总可以用加上该数的负数与其模数之和来代替,即

由于8位的字长表示带符号数的范围为+127~-128,若运算结果超出这个范围,则结果就不正确,一般称之为溢出。这时可扩大字长。如用16位字长,则它表示的数的范围为+32767~

-32768。

4)补码的运算

从以上讨论可知,在微型计算机中,带符号数一般都以补码的形式在机器中存在和进行运算,这主要是因为补码的加减法运算比原码的简单,它是符号位与数值位一起参加运算,并能自动获得正确结果。

设x和y是两个正数,可以证明两个数和的补码等于两个数补码的和,即同样,也可以证明该两数差的补码等于被减数的补码与减数负值的补码(或称求补)之和。

上式证明了补码运算中,两数差的运算可简化为单纯的加法运算。对于[-y]补可通过对[y]补连同符号位在内一起变反加1得到。

【例2-1】[y]补

=00000100[-y]补

= 11111100

【例2-2】x、y均为正数,且x>y。设x = 122,y = 37,字长n = 8,计算x-y。

解十进制计算二进制补码计算

真值为:正数(01010101)2 = 85。

【例2-3】x、y均为正数,且x<y,设x = 64,y = 65,字长n=8,计算x-y。

解十进制计算二进制补码计算

真值为:(11111111)补

= 10000001,真值= -l。

【例2-4】x、y均为正数,设x = 64,y=65,字长n = 8,计算x-y。

解十进制计算二进制补码计算此时两个正数相加,得出负数,显然是错误的,这种情况称为溢出。由表2-2知,8位计算机中,由于最高位为符号位,剩下的数值位只有7位,因此表示数范围是-128~+127。当两个正数相加其和大于127或两个负数相减其绝对值之和大于128时,就是“溢出”,会使结果出错。推广到字长n位符号数,最高位为符号位,n-1位表示数值。可表示的最大值为2n-1-1(即n

-1个1)。当运算结果超过此值时就产生溢出。对于补码的运算有以下两点需要注意:

(1)补码运算时,参加运算的两个数均为补码,结果也是补码,若计算真值,还需转换。

(2)运算时,第一,符号位与数值位须一起参加运算;第二,符号位产生的进位须舍掉;第三,要保证运算结果不超过补码所能表示的最大范围,否则将产生溢出错误。为此,在计算机中设有专门电路用以判断运算结果是否产生溢出,并以某种标志告知本次运算的结果是否产生溢出。

5)带符号数的溢出

如果计算机的机器字长是n位,n位二进制数的最高位为符号位,其余的n-1位为数值位,若采用补码表示,可以表示的数的范围为

-2n-1≤x≤2n-1-1

如果机器字长为8位,那么可以表示的有符号数的范围为-128~+127;如果机器字长为16位,则可以表示的有符号数的范围是 -32768~+32767。

当两个带符号数进行加减运算时,如果运算的结果超出了可表示的有符号数的范围,就会发生溢出,使得运算结果出错。显然,溢出问题只能发生在两个同号数相加或者两个异号数相减的时候。对于加法,如果次高位向最高位有进位,但是最高位没有进位;或者次高位没有向最高位进位,但是最高位产生了进位,都会发生溢出问题。因为这两种情况实际上是:两个正数相加结果是负数,两个负数相加结果是正数。这都是因为当前的机器字长不够,无法表示正确的结果,发生了溢出,所以出现了错误。例如,计算(+72)+(+98)时错误结果为

计算(-83)+(-80)时错误结果为对于减法运算,如果次高位向最高位有借位,但是最高位没有借位;或者次高位没有向最高位借位,但是最高位产生了借位,这都会发生溢出问题。因为这两种情况实际上是:正数减负数,差超出范围;负数减正数,差超出范围。这都是因为当前的机器字长不够,无法表示正确的结果,发生了溢出,所以出现了错误。例如,计算(+72)-(98)时错误结果为

计算(-83)–(+80)时错误结果为

在后面的学习中我们将知道,溢出表示的是带符号数的运算的错误,当溢出发生的时候,CPU中的标志寄存器中的溢出标志OF将置1。

2.十进制数的表示方法

计算机内部是以二进制表示数值的,而人们习惯使用十进制数。目前功能较强的计算机都能直接处理十进制表示的数,之后几章讲的8086CPU就有直接处理十进制数的指令。

1位十进制数用4位二进制数表示可以有很多方法,较常用的是8421码其编码表如表2-3所示。

8421码有10个不同的数字符号,且逢十进位,所以为十进制数。但其每一位十进制数是由4位二进制数表示的,因此称为二进制编码的十进制数,也称为BCD(BinaryCodedDecimal)码。

1)压缩的BCD码

压缩的BCD码是用一个字节,即8位二进制数表示两位十进制数的。高4位可以表示十进制数的十位数,低4位可以表示十进制数的个位数。

例如,[00100110]BCD中,高4位代表十进制数的2,低4位代表十进制数的6,所以其值应为(26)10。

2)非压缩的BCD码

非压缩的BCD码是用一个字节,即8位二进制数表示1位十进制数,其中高4位为0000,低4位用0000~1001分别表示0~9。

例如,[00001000]BCD表示十进制数8。2.3计算机中非数值数据信息表示计算机除了能对数值信息进行处理(主要是各种数学运算)外,对于文字、图画、声音等信息也能进行各种处理,当然它们在计算机内部也必须表示成二进制形式,这些通称为非数值数据。

1.西文信息的表示西文是由拉丁字母、数字、标点符号及一些特殊符号所组成的,它们统称为字符(Character)。众所周知,人们使用计算机时,基本手段之一是通过键盘与计算机打交道。从键盘上输入的命令和数据,不只是一种纯数字(0~9),而多数为一个个英文字母、标点符号和某些特殊符号。但计算机只能处理二进制代码数字,这就需要用二进制0和1对各种字符进行编码,输入的字符由计算机自动完成转换,以二进制代码形式存入计算机。如在键盘上输入大写英文A,存入计算机A的编码01000001,它已不再代表数字值,而是一个文字信息。目前国际上使用的字母、数字和符号的信息编码系统种类很多,经常采用的是美国国家信息交换标准代码ASCII(AmericanStandardCodeforInformationInterchange)。该标准制定于1963年,后来经国际标准化组织ISO和国际电报电话咨询委员会CCITT以它为基础制定了相应的国际标准。目前微型计算机的字符编码都采用ASCII码。

ASCII码是一种8位代码,一般最高位可用于奇偶校验,故仅用7位码来代表字符信息,共可表示128个字符,其中32个起控制作用的称为“功能码”,其余96个符号(10个十进制数码、52个英文大、小写字母和34个专用符号)供书写程序和描述命令之用,称为“信息码”,如表2-4所示。表2-4中010~111的6列中,共有96个可打印(或显示)的字符,又称为图形字符。这些字符有确定的结构形状,可在显示器和打印机等输出设备上输出。它们在计算机键盘上能找到相应的键,按键后就可将对应字符的二进制编码送入计算机内。

另外,表2-4中000~001共32个字符,又称为控制字符,它们在传输、打印或显示输出时起控制作用。按照它们的功能含义可分成如下5类:

(1)传输控制字符,如SOH(标题开始),STX(正文开始),ETX(正文结束),EOT(传输结束),ENQ(询问),ACK(认可),DLE(数据链转义),NAK(否认),SYN(同步),ETB(组传输结束)。

(2)格式控制字符,如BS(退格),HT(横向制表),LF(换行),VT(纵向制表),FF(换页),CR(回车)。

(3)设备控制字符,如DC1(设备控制1),DC2(设备控制2),DC3(设备控制3),DC4(设备控制4)。

(4)信息分隔类控制字符,如US(单元分隔),RS(记录分隔),GS(群分隔),FS(文件分隔)。

(5)其他控制字符,如NUL(空白),BEL(告警),SO(移出),SI(移入),CAN(作废),EM(媒体结束),SUB(取代),ESC(转义)。

此外,在图形字符集的首尾还有两个字符也可归入控制字符,即SP(空格字符)和DEL(抹除字符)。最后指出,在表2-4中,ASCII码用一个字节中的7位对字符进行编码,而最高位不参与编码,常用作奇/偶校验位,用以判别数码传送是否正确。

偶校验的含义是:包括校验位在内的8位二进制码中1的个数为偶数,如字母A的ASCII码(1000001B)加偶校验时为01000001B。奇校验的含义是:包括校验位在内,所有1的个数为奇数,因此,具有奇数校验位A的ASCII码则是11000001B。

我国于1980年制定了“信息处理交换器的七位编码字符集”,即国家标准GB1988—80,除用人民币符号“¥”代替美元符号“$”外,其余含义都和ASCII码相同。

2.中文信息的表示

中文的基本组成单位是汉字,汉字也是字符。西文字符集的字符总数不过几百个,使用7位或8位二进制就可表示。目前汉字的总数超过6万个,数量大,字形复杂,同音字多,异体字多,这就给汉字在计算机内部的表示与处理、汉字的传输与交换、汉字的输入和输出等带来了一系列的问题。为此,我国于1981年公布了“国家标准信息交换用汉字编码基本字符集(GB2312—80)”。该标准规定一个汉字用两个字节(256×256=65 536种状态)编码,同时用每个字节的最高位来区分是汉字编码还是ASCII字符码,这样,每个字节只用低7位,这就是所谓双7位汉字编码(128×128=16 384种状态),称做该汉字的交换码(又称国标码),其格式如表2-5所示。国标码中每个字节的定义域在21H~7EH之间。目前,许多机器为了能在内部区分汉字与ASCII字符,把两个字节汉字的国标码的每个字节的最高位置“1”,这样就形成了汉字的另外一种编码,称做汉字机内码(内码),若已知国标码,则机内码唯一确定,方法是机内码的每个字节为原国标码每个节字加80H。内码用于统一不同系统所使用的不同汉字输入码,使各种不同的汉字输出法进入系统后,一律转换为内码,使不同系统内的汉字信息可以相互转换。

GB2312 — 80编码按汉字使用频度把汉字分为高频字(约100个),常用字(约3000个),次常用字(约4000个),罕见字(约8000个)和死字(约4500个),并将高频字、常用字和次常用字归结为汉字字符集(6763个)。该字符集又分为两级,第一级汉字为3755个,属常用字,按汉语拼音顺序排列;第二级汉字为3008个,属非常用字,按部首排列。

汉字的输入方法很多,有区位、拼音、五笔字型等数百种。不同输入法有自己的编码方案,不同输入法所采用的汉字编码统称为输入码。输入码进入机器后,必须转为机内码。汉字的输出是先用汉字字型码(一种用点阵表示汉字字型的编码)把汉字按字型排列成点阵,常用点阵有16×16、24×24、32×32或更高的点阵。一个16×16点阵汉字要占用32个字节,24×24点阵汉字要占用72个字节,由此可见,汉字字形点阵的信息量很大,占用存储空间也非常大。所有不同的字体、字号的汉字字形构成字体,通常都存储在硬盘上,只有当要显示输出时,才去检索得到欲输出的字形。

3.计算机中图、声、像的表示

计算机除了能处理汉字、数值、数据之外,还能处理声音、图形和图像等各种信息。能处理声音、图形和图像信息的计算机称为多媒体计算机。

在多媒体计算机中,各种媒体也是采用二进制编码来表示的。首先,把声音、图像等各种模拟信息(如

温馨提示

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

评论

0/150

提交评论