计算机组成原理 第二章运算方法和运算部件一_第1页
计算机组成原理 第二章运算方法和运算部件一_第2页
计算机组成原理 第二章运算方法和运算部件一_第3页
计算机组成原理 第二章运算方法和运算部件一_第4页
计算机组成原理 第二章运算方法和运算部件一_第5页
已阅读5页,还剩85页未读 继续免费阅读

下载本文档

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

文档简介

第2章运算方法和运算器2.

1

数据和文字的表示方法和转换2.2

定点数的加减法运算2.

3

定点数的乘法运算2.4定点数的除法运算2.5浮点数的运算方法2.6数据校验码第2章运算方法和运算器学习要点:理解:掌握:数和文字的编码表示定点数加、减运算,逻辑运算运算器的组成和结构定点数乘、除运算浮点运算数据校验码2一、数值型数据的表示和转换1.数制(二进制、八进制、十进制、十六进制)

2.1数据与文字的表示方法

3二、八、十六和十进制数的对应关系二进制数

八进制数十六进制数十进制数00000001001000110100010101100111100010011010101111001101111011110123456710111213141516170123456789ABCDEF01234567891011121314154二进制数、八进制数、十六进制数转换为十进制数方法:按权展开2.不同数制间的数据转换解:(2A.8)H

=2×161+A×160+8×16-1=32+10+0.5=(42.5)D例1(2A.8)H

=(?)D

例2(165.2)O

=(?)D例3(10101.11)B

=(?)D解:

(165.2)O=1×82+6×81+5×80+2×8-1=64+48+5+0.25=(117.25)D解:

(10101.11)B=1×24+0×23+1×22+0×21+1×20+1×2-1+1×2-2=(21.75)D5十进制数转换为二进制数、八进制数、十六进制数整数部分转换:基数连除法1)十进制数整数部分不断除以基数2(8或16),记录下余数,直到商为0为止。2)由最后一个余数起逆向取各个余数,则为转换成的二进制(八进制或十六进制)数。 2.不同数制间的数据转换小数部分转换:基数连乘法1)小数部分不断乘以基数2(8或16),记录整数部分,直到小数部分为0为止。2)由第一个整数起顺向取各个整数,则为转换成的二进制(八进制或十六进制)数。3)小数转换会发生总是无法乘到为0的情况(可选取一定位数(精度),将产生无法避免的转换误差)练习:

(23.125)D=(?)B

(23.125)D=(10111.001)B62.不同数制间的数据转换二进制数、八进制数、十六进制数之间的转换二进制数转换八进制数:三位二进制数写成一位八进制数八(十六)进制数转换二进制数:一位八(十六)进制数写成三位(四位)二进制数例1(1011011111.10011)B=(?)O1337.46解:001011011111.100110二进制数转换十六进制数:四位二进制数写成一位十六进制数例2(1011011111.10011)B=(?)H2.FD98解:001011011111.10011000例3(36.24)O

=(?)B例4(3DB.46)H=(?)B

解:

(36.24)O=(011110.010100)B解:

(3DB.46)H=(001111011011.01000110)B7二、十进制数的编码与运算1.二—十进制码:用4位二进制码表示十进制数符“0~9”的代码,简称BCD码。若某种代码的每一位都有固定的“权值”,则称这种代码为有权代码;否则,叫无权代码。十进制数8421码5421码2421码0123456789000000010010001101000101011001111000100100000001001000110100100010011010101111000000000100100011010010111100110111101111四位有权码8十进制数余3码格雷码1

格雷码2

0123456789001101000101011001111000100110101011110000000001001100100110111010101000110001000000010001100010101010110011000110011000四位无权码例1(01001000.1011)余3BCD=(?)2421BCD=(15.8)D=(00011011.1110)2421BCD例2(73.4)O

=(?)8421BCD=(59.5)D=(01011001.0101)8421BCD练习:(01111001.011000100101)8421BCD=(?)B=(79.625)D=(1001111.101)B9主要有两种形式:非压缩的十进制数串:一个字节存放一位十进制数或符号位。压缩的十进制数串:一个字节存放二位十进制数。2.十进制数串在计算机内的表示与存储非压缩的十进制数串:每个十进制的数位或符号位都用一个字节存放+12-42-42压缩的十进制数串形式:一个字节存放两个十进制的数位+12123C012D+123-1210ASCII码汉字的表示三、字符编码

1.ASCII码“美国标准信息交换代码”(AmericanStandardCodeforInformationInterchange),简称ASCII码。7位二进制编码,可表示27=128个字符。ASCII码中,编码值0~31不对应任何可印刷(或称有字形)字符,通常称它们为控制字符,用于通信中的通信控制或对计算机设备的功能控制。编码值为32的是空格(或间隔)字符SP。编码值为127的是删除控制DEL码。其余的94个字符称为可印刷字符。11ASCII字符编码表0000010100111001011101110000NULDELSP0@P`p0001SOHDC1!1AQaq0010STXDC2"2BRbr0011ETXDC3#3CScs0100EOTDC4$4DTdt0101ENQNAK%5EUeu0110ACKSYN&6FVfv0111BELETB'7GWgw1000BSCAN(8HXhx1001HTEM)9IYiy1010LFSUB*:JZjz1011VTESC+;K[k{1100FFFS,<L\1|1101CRGS-=M]m}1110SORS.>N^n~1111SIUS/?O_oDEL

12特点:(1)汉字是一种象形文字,据统计,从甲骨文至今约有六万左右的汉字。目前常见的汉字有约七千个。(2)汉字字形结构复杂,笔划繁多。(3)汉字同音字多,多音字多。

2.汉字的表示输入码国标码字形码地址码机内码汉字输入汉字输出涉及多种编码:13汉字的输入编码(1)数字编码——国标区位码,用数字串代表一个汉字输入(2)字音编码——以汉字拼音为基础的输入方法(3)字形编码——用汉字的形状(笔划)来进行的编码,如五笔字形(4)混合编码汉字交换码——是不同的汉字处理系统之间交换信息用的编码。汉字内码——是用于汉字信息的存储、检索等操作的机内代码

一般采用两个字节表示,汉字内码有多种方案,常以国标码为基础的编码。 例如,将国标码两字节的最高位置1后形成 汉字“啊”的国标码

3021H(0011000000100001)

对应的汉字内码

B0A1H(1011000010100001)14字形码汉字的字模码为:16位×16位=32字节汉字字模点阵及编码15汉字的表示方法汉字的输入编码、交换码、汉字内码、字模码是计算机中用于输入、内部处理、交换、输出四种不同用途的编码。显示输出打印输出机内码向字形码转换机内码输入码向机内码转换字符代码化(输入)汉字的表示方法16反映无符号数的表示范围8位0~25516位0~655351.无符号数:全部二进制均代表数值,没有符号位。四、无符号数和带符号数+0.10110

1011小数点的位置+110001100小数点的位置–110011100小数点的位置–0.101111011小数点的位置真值(带符号的数)机器数(符号数字化的数)2.带符号数171.原码表示法规则:机器数的最高一位表示符号,“0”表示正号,“1”表示负号,后面各位用数的绝对值表示。定点整数的原码形式

五、数的机器表示

18定点小数的原码形式

192.补码表示法

结论:1)一个负数加上“模”即得该负数的补数;2)两个互为补数的数,它们绝对值之和即为模数;3)正数的补数即为其本身。20定点整数的补码形式

定点小数的补码形式

21

求补码的快捷方式

当真值为负数时,补码可用原码除符号位外每位取反,末位加1求得。

22若寄存器A、B分别保存了[X]补、[Y]补,要求:①描述加法器实现[X+Y]补

A的过程?②描述加法器实现[X-Y]补

A的过程?

233.反码表示法定点整数的反码形式

规则:机器数的最高一位表示符号,“0”表示正号,“1”表示负号,对于正数,反码和原码相同,对于负数,反码的数值是将原码数值部分按位取反。243.反码表示法定点小数的反码形式

当符号有进位时,应将进位加到运算结果的最低位,得到最后结果,称为“循环相加”。25

三种机器数的小结:

对于正数,符号位为0,原码=补码=反码

26例:设机器数字长为8位(其中一位为符号位),对于整数,当其分别代表无符号数、原码、补码和反码时,对应的真值范围各为多少?二进制代码无符号数对应的真值原码对应的真值补码对应的真值反码对应的真值000000000+0+0+0000000011+1+1+1000000102+2+2+201111111127+127+127+12710000000128-0-128-12710000001129-1-127-12611111101253-125-3-211111110254-126-2-111111111255-127-1-027移码在数轴上的表示

0真值

4.移码表示法

0

用来判断真值大小

(1)移码定义28真值是正数时,移码是补码的最高位加1;真值是负数时,移码是补码的最高位减1。(2)移码与补码的关系

29(3)移码的计算

30真值、补码和移码的对照表-1000001000000000000-111111000010000011-111101000100000102-0000111111101111131±0000000000010000032+0000100000110000133+0001000001010001034+1111001111011111062+111110111111111116331正数的原码、反码、补码等于真值,只有负数才分别有不同的表示方法;采用补码,减法运算可以用加法运算实现,节省硬件,目前机器中广泛采用补码表示法;有些机器用原码进行存储和传送,运算时改用补码;有些机器做加减法时用补码,做乘除法时用原码;移码表示法主要用于表示浮点数的阶码,可以直接比较大小。表示范围和补码相同,只有最高位相反。总结:32数据格式定点格式:小数点固定在某个位置上的数据,通常将数据表示成纯小数或纯整数,表数范围有限,但要求的处理硬件比较简单。浮点格式:小数点的位置可浮动的数据,表数范围很大,但要求的处理硬件比较复杂。

定点整数的小数点位置定点小数的小数点位置1.定点表示六、数据格式33

定点整数的表示范围

定点小数的表示范围

34

2.浮点表示

浮点数的规格化尾数:纯小数形式,小数点后第一位不为0,可正可负。阶码:整数,可正可负。规格化浮点数35

对于非规格化浮点数,进行规格化形式,其方式:将尾数M左移或右移,并修改阶码值。尾数左移1位,阶码值减1;尾数右移1位,阶码值加1。例:将0.0011规格化表示。

36

浮点数的机内表示形式

例:设某浮点数共12位。其中阶码含1位阶符共4位,以2为底,补码表示;尾数含1位数符共8位,补码表示,规格化。则该浮点数所能表示的最大正数是?

37

阶码用补码表示:0110011000阶码用移码表示:0010011000阶码用补码表示:1110001000阶码用移码表示:101000100038定点数和浮点数的比较:当浮点机和定点机中数的位数相同时,浮点数的表示范围比定点数的表示范围大得多。当浮点数为规格化数时,其相对精度远比定点数高。浮点数运算要分阶码部分和尾数部分,而且运算结果都要求格式化,故浮点数运算步骤比定点运算步骤多,运算速度比定点运算速度低,运算线路比定点运算复杂。39浮点数据编码的标准是IEEE754标准浮点数符号位阶码尾数总位数单精度182332双精度1115264尾数通常采用原码或补码形式,阶码的编码可采用移码(或补码)进行编码。32位单精度浮点数E:含阶符的阶码,8位阶码采用移码方式来表示正负指数S:1位符号位,0表示正数,1表示负数M:尾数,23位小数表示,小数点放在尾数域最前面偏移量:1274064位双精度浮点数E:含阶符的阶码,11位S:1位符号位M:尾数,52位小数浮点数据编码的标准是IEEE754标准浮点数符号位阶码尾数总位数单精度182332双精度1115264偏移量:102341

规格化表示原则42

③包括隐藏位1的尾数1.M=1.011011例:浮点机器数(41360000)16,求真值①十六进制数展开成二进制数01000001001101100000000000000000

S例:真值20.59375,求32位单精度浮点数①分别将整数和分数部分转换成二进制数20.59375=10100.10011②移动小数点,使其在第1、2位之间得10100.10011=1.010010011×24

③得到32位浮点数的二进制存储格式为:01000001101001001100000000000000=(41A4C000)1643例:将十进制数178.125表示成微机中的单精度浮点数

例:将下面Pentium机中的单精度浮点数表示成十进制真值是多少?即3F580000H=00111111010110000000000000000000B

44浮点数的特点1)数值范围是指机器所能表示的一个数的最大值和最小值之间的范围,浮点数的表示范围取决于阶码的位数2)数据精度是指一个数的有效位数,浮点数的相对精度取决于尾数的位数。3)同一个浮点数的表示不是惟一的。4)如果一个浮点数的尾数为0,不论其阶码为何值,或者当阶码的值遇到比它能表示的最小值还小时,不管其尾数为何值,计算机都把该浮点数看成零值(机器零)。1.将十进制数+76.75存入某微机中,写出在微机中的单精度浮点形式。练习:

2.某微机内存有单精度符点数为C2308000H,计算其真值。

452.2定点加减法运算一、补码的加减运算及其溢出的处理1.加减运算

46溢出!!

47溢出的处理1、什么是溢出?当运算结果超出机器数所能表示的范围时,称为溢出。两个异号数相加或两个同号数相减,其结果是不会溢出的。

仅当两个同号数相加或者两个异号数相减时,才有可能发生溢出的情况。两个正数相加,结果为负称为上溢(正溢)。两个负数相加,结果为正称为下溢(负溢)。

正溢负溢48

2、溢出条件及实现逻辑

49正确,无溢出(1)A=3B=2(2)A=10B=7(3)A=-3B=-2

错误,正溢

正确,无溢出

50错误,负溢(4)A=-10B=-7

正确,无溢出(5)A=6B=-4

正确,无溢出(6)A=-6B=4

51V0

A

nGAGS

加法器(n+1)溢出判断求补控制逻辑0

X

n二、补码加减法的硬件配置A、X均n+1位GA为加法标记、GS为减法标记,V溢出标记。521.全加器二、二进制加法器Ai

Bi

CiSi

Ci+10000010100111001011101110010100110010111全加器真值表全加器逻辑图

一位全加器内部逻辑图532.串行进位全加器四位串行进位加法器串行进位:高位的加法运算,必须等到低位的加法运算完成之后才能进行。54超前进位的主要目标:使各级进位同时产生,而不是依次产生。2.先行进位全加器全加器表达式:

这样可得各位进位信号的逻辑表达式如下:

55超前进位四位加法器74LS283逻辑图与引脚(a)逻辑图

(b)引脚图56ALU—74181输入/输出信号:A0~A3、B0~B3:参加运算的两个数S0~S3:选择控制端---选择不同的算术和逻辑运算M:状态控制端,为高电平执行逻辑运算;为低电平执行算术运算Cn:ALU的最低进位位F0~F3:ALU的运算结果Cn+4:ALU最高位产生的进位G、P:ALU的进位产生与传递57ALU74181功能表-能执行16种算术、16种逻辑运算(P22)LLLLLLLHLLHLLLHHLHLLLHLHLHHLLHHHHLLLHLLHHLHLHLHHHHLLHHLHHHHLHHHH

正逻辑

S0S1S2S358用4片74181电路可组成16位ALU,若把16位ALU中的每四位作为一组,用位间快速进位的形成方法来实现16位ALU中“组间快速进位”,那么就能得到16位快速ALU。Cn+4CnCn+4Cn

Cn+4Cn

Cn+4CnCn0123片内进位快速,但片间进位是逐片传递的,由此形成F0~F15的时间还是比较长。GIIIPIIIGIIPIIGIPIGIVPIV7418274181741817418174181CIIICIICIC0CIV59补充:移位运算逻辑移位无符号数的移位算术移位有符号数的移位逻辑左移逻辑右移低位添0,高位移丢高位添0,低位移丢1右移添1左移添00反码补码原码负数0原码、补码、反码正数添补代码码制真值符号位不变60

符号位单独处理乘数的某一位决定是否加被乘数4个位积一起相加乘积的位数扩大一倍2.3定点乘法运算一、定点原码一位乘法1.笔算乘法612.乘法改进

①②⑧

第二步:右移一位,得新的部分积第八步:右移一位,得结果③

右移一位…62改进后乘法过程0.0000+0.11010.1101+0.1101+0.0000+0.1101初态,部分积=0乘数为1,加被乘数乘数为1,加被乘数乘数为0,加01.001110.1001111.0001111乘数为1,加被乘数0.10001111右移一位,得结果1011=0.0110右移一位,形成新的部分积1101=0.1001右移一位,形成新的部分积1110=0.0100右移一位,形成新的部分积1111=部分积乘数说明

63

被乘数只与部分积的高位相加硬件3个寄存器,具有移位功能一个全加器小结:

乘法运算可用加和移位实现n=4,加4次,移4次由乘数的末位决定被乘数是否与原部分积相加,然后右移一位形成新的部分积,同时乘数右移一位(末位移丢),空出高位存放部分积的低位。64

3.原码乘法

(1)原码一位乘运算规则(以小数为例)65原码一位乘递推公式:

z1zn

………z0

66例1:已知x=–0.1110y=0.1101求[x•y]原解:

部分积乘数说明

右移一位,得z4逻辑右移逻辑右移

=

右移一位,得z1

=

右移一位,得z2

=

右移一位,得z3

=[x]原=1.1110[y]原=0.110167②数值部分按绝对值相乘

特点:绝对值运算逻辑移位用移位的次数判断乘法是否结束

68Cx+1SRTiQLDR1LDR0部分积Z乘数Y计数器iY/2

Y∑/2

Z乘法启动YnYnYnR1ZsXsYsT1,T2,…R0R0被乘数X加数器(2)原码一位乘逻辑实现690An加法器控制门0Xn移位和加控制计数器CSGM0Qn右移A、X、Q均n+1位移位和加受末位乘数控制A:部分积Q:乘数X:被乘数乘积高位乘积低位70算法分析

(3)定点原码两位乘运——每次用两位乘数去乘被乘数原码乘符号位和数值位部分分开运算两位乘每次用乘数的2位判断原部分积是否加和如何加被乘数

71运算规则111110101100011010001000操作内容标志位Cj

72

0初态z0=0–

x*,Cj=1

01

0001

+2x*,Cj=0

+2x*,Cj=01

011001右移两位0

000110右移两位0

右移两位算术右移算术右移解:Cj部分积乘数

说明算术右移[x]补=0.100111

73②数值部分的运算x*•

y*=0.010111110001则[x

y]原

=0.010111110001特点:绝对值的补码运算算术移位用移位的次数判断乘法是否结束

74

000.111111

0初态z0=0+x*,Cj=0010.00110111000.111000000111111.1001000111001.111110+2x*,Cj=0111.000001–x*,Cj=1000.111111+x*,Cj=00000.001111111110右移两位0000.100011011111右移两位1111.111001000111

右移两位Cj部分积乘数

说明算术右移算术右移解:[x]原=0.111111[y]原=1.11100175x*•

y*=0.111000000111则[x

y]原

=1.111000000111特点:绝对值的补码运算算术移位用移位的次数判断乘法是否结束②数值部分的运算

76符号位操作数移位移位次数最多加法次数x0

y0x0⊕y0绝对值绝对值的补码逻辑右移算术右移nn

原码一位乘原码两位乘(4)原码两位乘和原码一位乘比较77(1)定点补码一位乘法(以小数为例)

4.补码乘法

78

0.00001.0011

初态,部分积=0乘数为1,加被乘数乘数为1,加被乘数乘数为0,加0

乘数为1,加被乘数

右移一位1,得结果

=

右移一位,形成新的部分积

=

右移一位,形成新的部分积

=

右移一位,形成新的部分积

=

部分积乘数说明

79

初态,部分积=0乘数为1,加被乘数乘数为0,加0乘数为1,加被乘数

乘数为0,加0

右移一位,形成新的部分积

=

右移一位,形成新的部分积

=

右移一位,形成新的部分积

=

右移一位,形成新的部分积1110=

部分积乘数说明

80乘法小结原码乘——符号位单独处理;补码乘——符号位自然形成;原码乘去掉符号位运算,即为无符号数乘法;不同的乘法运算需有不同的硬件支持。整数乘法与小数乘法完全相同,可用逗号代替小数点;81

1商符号单独处理心算上商

商的符号心算求得00.101000余数不动低位补“0”,

减右移一位的除数上商位置不固定2.4定点除法运算一、定点原码一位除法1.笔算除法82笔算除法和机器除法的比较笔算除法

机器除法商符单独处理心算上商符号位异或形成

余数不动低位补“0”减右移一位的除数2倍字长加法器上商位置不固定余数左移一位低位补“0”减除数1倍字长加法器在寄存器最末位上商83

温馨提示

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

评论

0/150

提交评论