微原第2章教材_第1页
微原第2章教材_第2页
微原第2章教材_第3页
微原第2章教材_第4页
微原第2章教材_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

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

文档简介

西安邮电大学计算机学院微机原理与接口技术教材及参考书《微型计算机原理》王忠民王钰王晓婕编著《微型计算机原理》学习与实验指导王钰王劲松邢高峰编著第2章计算机中数制和编码主要内容:无符号数的表示和运算带符号数的表示和运算信息的编码定点数与浮点数表示2.1无符号数的表示和运算

在计算机中,不仅数据是以二进制形式表示的,字母、符号、图形、汉字以及指令等都是以二进制形式表示的。一、无符号数的表示及运算

1.无符号数的表示方法在计算机中对于无符号数分为二进制数、十进制数和十六进制数等。1.十进制数的表示方法十进制计数法的特点是:①逢十进一;②使用10个数字符号(0,1,2,……,9)的不同组合来表示一个十进制数;③以后缀D或d表示十进制数(Decimal),该后缀可以省略。可表示为:式中:m表示小数位的位数,n表示整数位的位数,Di为第i位上的数符(可以是0

9十个数字符号中的任一个)。例2.1138.5(D)=2.

二进制数的表示方法

二进制计数法的特点是:①逢二进一;②使用2个数字符号(0,1)的组合来表示一个二进制数;③以后缀B或b表示二进制数(Binary)。

二进制数可表示为:

m为小数位的位数,n为整数位的位数,Bi为第i位上的数符(0或1)例:1101.11B=3.十六进制数的表示法

十六进制计数法的特点是:①逢十六进一;②使用16个数字符号(0,1,2,3……,9,A,B,C,D,E,F)的不同组合来表示一个十六进制数,其中A

F依次表示10

15;③以后缀H或h表示十六进制数(Hexadecimal)。

十六进制数可表示为:m为小数位的位数,n为整数位的位数,Hi为第i位上的数符(可以是0,1,…,9,A,B,C,D,E,F十六个数字符号中的任一个)例2.30E5AD.BFH=

NR

=

kiRi

R

为基数,表示R

进制(如R=2,10,16分别表示二进制,十进制,十六进制等)i为位序号m为小数部分的位数n为整数部分的位数ki为第i位上的数值,可以是0,1,2,……,R-1共R个数字符号中的任一个Ri为第i位的权NR=kn-1Rn-1+kn-2Rn-2++k1R1

+

k0R0+k-1R-1++

k-(m-1)R-(m-1)+k-mR-m

2.各种数制的相互转换①任意进制数转换为十进制数的方法很简单,只要按其进制的多项式各位按权展开求和即可。例2.1将二进制数1101.11转换十进制数。

(1101.11)2=1

23+1

22+0

21+1

20+1

2-1+1

2-2

=23+22+20+2-1+2-2=8+4+1+0.5+0.25=(13.75)10②十进制数转换为任意进制数的方法采用。整数部分:除R取余法,商为0停止。小数部分:乘R取整法,小为0停止。最先出来的数离小数点最近。

例2.2将十进制数25.6875转换为二进制数和十六进制数。

225取余:10.6875×2=1.375取整:1212取余:00.375×2=0.75取整:026取余:00.75×2=1.5取整:123取余:10.5×2=1.0取整:121取余:10

故25.6875对应的二进制数为11001.1011B。(注:箭头为取数方向。)③十六进制和二进制之间的转换是非常简单的,只要按4位二进制数对应转换即可。方法是以小数点为界,整数部分自右至左,小数部分自左至右分组,二进制转换为十六进制,4位为一组,不足时补0。例2.3将二进制数1101110.01011B转换为十六进制数,将十六进制数2F.1BH转换成二进制数。【解】1101110.11011B=0110,1110.1101,1000B=6E.D8H3F.1CH=0011,1111.0001,1100B=111111.000111B3.二进制数的运算

(1)算术运算规则加:0+0=01+0=10+1=11+1=0(有进位)减:0-0=01-1=01-0=10-1=1(有借位)乘:0×0=01×1=11×0=00×1=0

除:1÷1=10÷1=0 (2)逻辑运算规则“与”(AND):

0∧0=00∧1=01∧0=01∧1=1“或”(OR):

0∨0=00∨1=11∨0=11∨1=1“非”(NOT):0=1 1=0“异或”(XOR):可用符号“”表示,也可用“⊕”表示

0⊕0=01⊕1=00⊕1=11⊕0=1 2.2带符号数的表示及运算

1.机器数与真值通常,把一个数及其符号位在机器中的一组二进制数表示形式称为“机器数”。机器数所表示的值称为机器数的“真值”。

2.机器数的表示方法 在计算机中对于带符号的数是采用二进制编码(机器数)的方法表示。也即将其数的符号(正负号)用一位二进制数来表示,(“0”表示正,“1”表示负),放在最高位。其数值用二进制数表示。

带符号数的二进制编码有三种方法:原码表示法、反码表示法和补码表示法。①原码定义:假设字长为n,则

X

0≤X≤2n-1-1 ;X为正数

2n-1+|X|

-(2n-1-1)≤X≤0;X为负数②反码定义:假设字长为n,则

X 0≤X≤

2n-1-1

;X为正数

2n-1-|X|

-(2n-1-1)≤X≤0;X为负数③补码定义:假设字长为n,则

X

0≤X≤

2n-1-1 ;X为正数

2n-|X|

-2n-1≤X<0 ;X为负数[X]原=[X]反=[X]补=

由上可知,正数的原码、反码和补码表示是相同的,而其负数的原码、反码和补码是有区别的,补码等于反码加1。

例2.4求X=-5的原码,反码和补码。

【解】设字长n为8,则

[X]原=2n-1+|X|=27+|-5|=128+5

=10000000B+101B=10000101B [X]反=2n-1-|X|=28-1-|-5|=255-5

=11111111B-101B=11111010B [X]补=2n-|X|=28-|-5|=256-5

=100000000B-101B=11111011B2.2.3

真值与机器数之间的转换

一.原码转换为真值

根据原码定义,将原码数值位各位按权展开求和,由符号位决定数的正负即可由原码求出真值。

二.反码转换为真值

要求反码的真值,只要先求出反码对应的原码,再按上述原码转换为真值的方法即可求出其真值。正数的原码是反码本身。负数的原码可在反码基础上,符号位仍为1不变,数值位按位取反。3.补码转换为真值

同理,要求补码的真值,也要先求出补码对应的原码。正数的原码与补码相同。负数的原码可在补码基础上再次求补,即:[[X]补]补=[X]原例2.10

已知[x]补=00001111B,[y]补=11100101B,求x和y。解:

[x]原=[x]补=00001111B,

x=+(0

26+0

25+0

24+1

23+1

22+1

21+1

20)=15[y]原=[[y]补]补=10011011B,

y=-(0

26+0

25+1

24+1

23+0

22+1

21+1

20)=-27

3.补码的运算目前,计算机中通常用补码进行带符号数的运算。补码运算的规则为:①[X]补±[Y]补=[X±Y]补 两数补码的和或差等于两数和或差的补码

[X]补+[Y]补=[X+Y]补

[X]补-[Y]补=[X]补+[-Y]补=[X-Y]补②[[X]补]补=[X]原补码再求补等于原码

例2.11

已知[+51]补=00110011B,[+66]补=01000010B,

[+66]补+[+51]补=?[+66]补-[+51]补=?解:

二进制(补码)加法十进制加法

01000010[+66]补

+66+)00110011[+51]补

+)+5101110101[+117]补

+117

例2.11

已知[+51]补=00110011B,[+66]补=01000010B,

[+66]补+[+51]补=?[+66]补-[+51]补=?解:

[+66]补

-[+51]补=[+66]补+[-51]补

二进制(补码)加法十进制加法

01000010[+66]补

+66+)11001101[-51]补

-)+5100001111[+15]补

+151自动丢失[-51]补

=11001101B

可以看出,不论被加数、加数是正数还是负数,只要直接用它们的补码直接相加,当结果不超出补码所表示的范围时,计算结果便是正确的补码形式。计算机中带符号数用补码表示时有如下优点:①可以将减法运算变为加法运算,因此可使用同一个运算器实现加法和减法运算,简化了电路。②无符号数和带符号数的加法运算可以用同一个加法器实现,结果都是正确的。

无符号数带符号数

11100001 225 [-31]补+)00001101+) 13 +)[+13]补

11101110 238[-18]补

计算机处理是二进制的形式的操作数,程序设计者应该清楚该操作数到底是无符号数、补码形式的带符号数或是其他形式的信息编码,这样才能对计算结果作出正确的判断和处理。4.溢出及其判断方法

(1)进位与溢出进位:用来判断无符号数运算结果是否超出了计算机所能表示的最大范围,是指运算结果的最高位向更高位的进位。 溢出:用来判断带符号数运算结果是否超出了计算机补码所能表示的范围,是指带符号数的补码运算结果的溢出。例如,字长为n位的带符号数,它能表示的补码范围为-2n-1

+2n-1-1,如果运算结果超出此范围,就叫补码溢出,简称溢出。(2)溢出的判断方法

判断溢出的方法很多,常用的有:

①观察法:通过观察参加运算的两数的符号及运算结果的符号进行判断,仅适用于手工运算。②双符号位法:通过运算结果的两个符号位的状态来判断结果是否溢出。③单符号位法:通过符号位和数值部分最高位的进位状态来判断结果是否溢出。(也称双高位法)

微型计算机中判断带符号数补码运算的溢出常采用“单符号位法”判别法。假设用OF表示溢出,用CF表示最高为(符号位)的进位,用DF表示次高为(数值部分最高位)的进位,则有

OF=CF∨DF(或OF=CF⊕DF)

若OF=1说明结果溢出;若OF=0说明结果不溢出。也就是说,当符号位和数值部分的最高位同时有进位或同时无进位时,结果没有溢出,否则,结果溢出。例2.5设有两个操作数x=01000100B,y=01001000B,将这两个操作数送运算器做加法运算,试问: ①若为无符号数,计算结果是否正确? ②若为带符号数,计算结果是否正确? 【解】 ∵无符号数带符号数

01000100 68 [+68]补 +01001000+72+ [+72]补

10001100140 [+140]补

DF=1CF=0①若为无符号数,由于CF=0(最高位向更高位的进位),说明结果未超出8位无符号数所能表达的数值范围(0

255),计算结果10001100B其真值为140,计算结果正确。②若为带符号数补码,由于CF⊕DF=1,结果溢出,运算结果不正确。其实不难看出,两个正数相加结果为负数,结果肯定不正确;原因是:+68和+72两补码之和应为+140的补码,而8位带符号补码所能表达的数值范围为-128

+127,结果超出该范围,溢出,所以结果是错误的。例2.6

设有两个操作数x=lllOlllOB,y=l1001000B,将这两个操作数送运算器做加法运算,试问:①

若为无符号数,计算结果是否正确?②若为带符号补码数,计算结果是否溢出?【解】无符号数带符号数

11101110238[-18]补+11001000+200+[-56]补自动丢失←110110110438[-74]补

DF=1CF=1

①若为无符号数,由于CF=1,说明结果超出8位无符号数所能表达的数值范围(0

255)。两操作数lllOlllOB和11001000B对应的无符号数分别为238和200,两数之和应为438>255,因此,计算结果是错误的。②若为带符号数补码,由于CF⊕DF=0,结果未溢出。两操作数lll01110B和11001000B分别为-18和-56的补码,其结果应为-74的补码形式,而计算结果10110110B正是-74的补码,因此结果正确。2.3信息的编码信息的编码是计算机在进行人机交换信息时用到的信息(如数字、字母、符号等)的二进制编码。在计算机中常用的信息编码有两种:BCD码和ASCII码。

1.BCD编码(二进制编码的十进制数)

BCD码是用二进制编码表示的十进制数(Binary-CodedDecimal)。BCD码可分为两种:压缩型BCD码和非压缩型BCD码。①压缩型BCD码:是用一个字节表示两位十进制数(每个十进制数用4个二进制数表示);②非压缩型BCD码是用一个字节表示一位十进制数(一位十进制数占用低4位二进制数,高4位二进制数为0)。例2.7十进制数与BCD数相互转换①将十进制数69.81转换为压缩型BCD数:

69.81=(01101001.10000001)BCD②将BCD数10001001.01101001转换为十进制数:

(10001001.01101001)BCD=89.69BCD码是将每个十进制数用一组4位二进制数来表示,虽然BCD码可以简化人机联系,但它比纯二进制编码效率低,对同一个给定的十进制数,用BCD码表示时需要的位数比用纯二进制码多。若将BCD码送计算机进行运算,由于计算机总是将数当作二进制数来运算,所以结果可能出错,因此需要对计算结果进行必要的修正,才能使结果为正确的BCD码形式。例2.8

用BCD码求38+49=?【解】∵ 0011100038的BCD码 + 0100100149的BCD码

1000000181的BCD码(结果不对) + 0000011006的BCD码(修正码)

1000011187的BCD码(结果正确) ∴38+49=87

出错原因:十进制数相加是“逢十进一”,而4位二进制数相加相当于十六进制数相加是“逢十六进一”所以当相加结果超过9时将比正确结果少6,因此结果出错。

解决办法:对二进制加法运算结果采用“加6修正”,从而将二进制加法运算的结果修正为BCD码加法运算结果。修正原则:①如果两位BCD码的运算的结果向高位无进位,且小于或等于9,则该位不需要修正;若得到的结果大于9且小于16,则该位需要加6修正。②如果两位BCD码的运算结果向高位有进位(即大于或等于16),则该位需要加6修正。

2.ASCII字符编码

ASCII码(AmericanStandardCodeforInformationInterchange—美国标准信息交换码):是用一个字节来表示一个字符,采用7位二进制代码来对字符进行编码,最高为一般为0。7位二进制代码能表示27=128种不同的字符,其中包括数字(0

9),英文大小写字母,标点符号及控制字符等,见教材P29表2.3。

表2.3美国标准信息交换码ASCII(7位代码)

2.4数的定点与浮点表示法在计算机中,用二进制表示实数的方法有两种:即定点表示法和浮点表示法。①定点表示法:是指小数点在数中的位置固定。通常

温馨提示

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

评论

0/150

提交评论