计算机组成原理(第6版)课件 第2章 数据表示、运算与校验_第1页
计算机组成原理(第6版)课件 第2章 数据表示、运算与校验_第2页
计算机组成原理(第6版)课件 第2章 数据表示、运算与校验_第3页
计算机组成原理(第6版)课件 第2章 数据表示、运算与校验_第4页
计算机组成原理(第6版)课件 第2章 数据表示、运算与校验_第5页
已阅读5页,还剩110页未读 继续免费阅读

下载本文档

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

文档简介

第2章数据表示、运算与校验主要介绍:①数字型数据的计数制、符号数的表示、定点数和浮点数;②基本的运算方法;③字符的表示;④常用的数据校验方法;1/322.1.1进位计数制※数制的基与权在任一数制中,每一个数位上允许使用的记数符号的个数被称为该数制的基数。每1位都对应1个表示该位在数码中的位置的值,这个值就称为数位的权值w。[例]

12810,110122.1数值型数据的表示方法

W=102W=232/32(1)2进制:0、1(2)8进制:0、1、2、…、7(3)16进制:0、…、9、A、B、C、D、E、F1.常用的几种进位制2.进制之间的转换(1)整数

10

2(除2取余法)(2)小数10

2(乘2取整法)(3)整数

2

10(按权相加)(4)小数2

10(按权相加)(5)16进制↔2进制(逐位转换/分组转换)3/3229(1)2910→X22141270231211201高位低位(2)0.687510→X2除2取余乘2取整0.6875×2=1.37510.375×2=0.7500.75×2=1.510.5×2=1.01低位高位X2=111012X2=0.10112(3)1101.112→X10X10=1×23=13.7510按权相加+1×22+0×21+1×20+1×2-1+1×2-24/32(4)1111012→X16X16=111101=00111101(5)28AF16→X2X2=28AF(6)28AF16→X10X10=28AF==1041510=0010=0011

1101=3D161000101011112×163+8×162+10×161+15×160按权相加逐位转换4位分组、按组转换5/322.1.2带符号数的表示数的符号表示规则:“0”表示正号“+”,“1”表示负号“-”01001010+1001010-100101011001010一个二进制数,用0-1代码表示符号,数值位不变就得到与该二进制数真值对应的原码真值原码1、原码二进制数的码制:原码、反码、补码和移码6/32字长为8位的原码表示范围为:-127~+127

[+127]原

=01111111

[–127]原

=11111111数值“0”有两种原码形式:

[+0]原=00000000

[-0]原=100000007/322、反码②负数情况符号位保持为“1”,数值位分别“按位取反”①

正数情况X反=X原(X≥0)[例]

X=

-1101001

(真值-105)X原=1

1101001X反=1

0010110[例]

X=

+1101001(真值+105)

X反=X原=0

11010018/32字长8位的反码表示范围为:-127~+127

[+127]反=01111111

[-127]反=10000000数值“0”也有两反码形式:[+0]反=00000000[-0]反=1111111119/32※补码的编码规则:3、补码(a)对于正数(字长8位)

[X]补=[X]原

(即X≥0时)(b)对于负数(字长8位)符号位仍保持为“1”其余各数值位“按位取反,末位再加1”

[X]补=[X]反+…1

(即X<0时)10/32编码定义:[X]补=X+2n(模2n),n为编码位数字长8位的补码表示范围为:-128~+127

[+127]补=01111111;

[-128]补=1

0000000※注意补码比原码和反码多表示1个负值,即-128数值“0”只有1种补码形式:

[+0]补=[-0]补=

0000000011/324、原码和补码之间的转换(1)已知[X]原,求[X]补[例]已知[X]原=10011010,求[X]补

解:[X]原=

10011010

↓↓↓↓↓↓↓↓11100101+

1[X]补=11100110符号位不变,其余各位变反原码为负数末位加112/32+1

(2)已知[X]补,求[X]原

[[X]补]补=[X]原[例]已知[X]补=11101100,求[X]原解:[X]补=

11101100

↓↓↓↓↓↓↓↓

10010011[X]原=10010100符号位不变,其余各位变反补码为负数末位加113/32+1(3)求补(变补),即已知[X]补,求[-X]补[X]补的代码连同符号位一起变反,末位再加1,即得到[-X]补[例]已知[X]补=01010110,求[-X]补解:[X]补=01010110

↓↓↓↓↓↓↓↓10101001

[-X]补=10101010不区分正负数连同符号位一起变反末位加114/325、移(增)码上述规则等价于将x正向平移或者增加2n-1

,因此称之为移码或增码。移码通常用于表示浮点数的阶码。阶码一般为整数,故移码通常只用于表示整数对定点整数x,它的移码是:

[x]移=2n-1+x,其中-2n-1≤x<2n-1这里的n为X原位数15/32[例]阶码的为6位,X表示其真值

X移=25+X(-25<X<25)[例]当正数X=+10101时,

X移=25+X=110101

当负数X=-10101时,

X移=25+X=25-10101

=001011移码表示范围与补码一致,0也只有1个移码。正数:将原码符号位变反,即得到移码。负数:将原码连同符号位一起变反,末位再加1,即得到移码(与变补等效)。补码和移码:

符号相反、数值位相同16/32二进制代码无符号真值原码真值反码真值补码真值移码真值0000000000000001┆0111111001111111100000001000000110000010┆11111101111111101111111101┆126127128129130┆253254255+0+1┆+126+127-0-1-2┆-125-126-127+0+1┆+126+127-127-126-125┆-2-1-0+0+1┆+126+127-128-127-126┆-3-2-1-128-127┆-2-1012┆12512612717/321、定点数的表示2.1.3定点数与浮点数.01011101数值部分符号位小数点数的小数点固定在同一位置不变。①带符号的定点小数约定所有数的小数点的位置,固定在符号位之后。字长n+1位,则表示范围为:-(1-2-n)

~1-2-n18/32②带符号的定点整数

0101110

.1数值部分符号位小数点小数点的位置固定在最低数值位之后字长n+1位,则数的表示范围为:-(2n-1)~2n-119/32③无符号定点整数若代码序列为XnXn-1…X1X0,共n+1位,则有:典型值真值代码序列最大正数2n+1-111…1111最小非零正数100….001表示范围为:小数点的位置固定在最低数值位之后

0~(2n+1-1)分辨率为:

120/3210000000补~01111111补无符号数:定点整数:定点小数:00000000~11111111025511111111原~01111111原-127127-1281271.1111111原~0.1111111原-(1-2-7)(1-2-7)1.0000000补~0.1111111补-1(1-2-7)※字长8位的定点数的表示范围21/322、浮点数的表示原理①浮点表示中,小数点的位置可按需浮动格式模型:阶符阶码位

.数符.尾数位阶码(带符号的定点整数)尾数(带符号的定点小数)隐含小数点隐含小数点22/32②引入浮点数表示的意义[例]某字长为8位的原码二进制数定点数:11111111~01111111-127

127-(1-2-7)

1-2-7精度:1精度:2-7浮点数:5位阶码+3位尾数215×(-0.75)

~

215×0.75精度:11111001=2-15×0.2501111111~01111011整数:小数:相同字长时,浮点数的表示范围更大、精度更高!23/32浮点数真值:N=±RE×M

阶码E尾数M阶符数符R:阶码的底数,隐含约定为2。E:阶码,定点整数,补码或移码表示,其位数决定了数值的范围;M:尾数,为定点小数,原码或补码表示,其位数决定着数的精度;数符表示数的正负。③浮点数的机器(存储)格式EfE1…EmMfM1…Mn24/32④尾数M的规格化表示规格化的目的→使浮点数的表示代码“唯一”128=0.128×103=1.28×102=12.8×101,…科学计数法约定:1≤|M|<10则规范形式:128=1.28×102(唯一)3.2=1.6×21=0.8×22=0.4×23,…可以表示成任意多个代码形式约定尾数M的值域,使数的表示是唯一的、确定的→计算不便→尾数M的“规格”化25/32正数,规格化后最高数值位为“1”负数,规格化后最高数值位为“0”规格化以后尾数的最高有效位为“1”对于补码:对于原码:①浮点数用原码表示时0-11-1/21/2-1≤M﹤-1/2

或1/2≤M﹤1②浮点数用补码表示时1/2≤|M|﹤1M原=0.1000,1.1010M原=0.0010,1.0110如0.1010,0.1110非规格化如1.0010,1.0000-0.875-10.6250.87526/32最小浮点数最大浮点数为最大正数:[例1]阶符1位、阶码m位,数符1位、尾数n位,如果表示成规格化补码,分析各真值对应的M、E取值情况。最小浮点正数为最大正数:2

-1m为最小负数:-1为最大正数:2

-1m1-2-n为最小负数:-2

m为最小正数:2-1最大浮点负数为最小负数:-2

m为最大负数:-(1/2+2-n)N=M×2E-1≤M<-1/2或1/2≤M<1=F(M,E)-2m≤E≤2m-1E→M→

E→M→

E→M→

E→M→

27/32[思考]某十六进制浮点数A368000016,将其表示成补码,字长32位,阶码8位(含1位阶符),尾数24位(含1位数符),求该浮点数十进制的真值。表示范围:231

×(-1)[例2]某个用规格化补码表示的浮点数,其中阶码6位(含1位阶符),尾数10位(含1位数符)。绝对精度=2-32×0.5=2-33相对精度=2-9(即最小的非0正数):(只与尾数的数值位数有关):011111

100…00~011111

011…11231×

(1-2-9)100000

010…00xxxxxx

000…0128/323、※IEEE754格式的浮点数在上述的表示格式中:S=浮点数的符号位,0表示正数,1表示负数;E=阶码,8位,采用移码表示,阶符隐含;M=尾数,23位,纯小数表示,且真值=1+M;阶码E采用移码形式,但只偏移27-1

(不是27)。

有32位浮点数(单精度)和64位浮点数(双精度)①32位短浮点数:SEM3130

~

2322

~

029/32在上述表示格式中:S=浮点数的符号位,0表示正数,1表示负数;E=阶码,11位,采用移码方式,阶符隐含;M=尾数,52位,用纯小数表示;对阶码E编码时,只偏移210-1

(标准移码偏移210)。②64位长浮点数:SEM6362

~

5251

~

030/32※补充说明:

31/32(1)为了确保浮点数表示的唯一性,约定0≤M<1;(2)E为全0且M非全0:非规范浮点数(E偏移126),则:F真=(-1)S×M×2E-126(5)E为全1(255):M为全0,则F真=±∞(6)E为全1(255):M非全0时,代码无效(NaN);(4)1≤E≤254:数是规范浮点数(E偏移127),则:F真=(-1)S×(1+M)×2E-127(3)E为全0且M为全0:表示浮点数0[解答]首先分别将整数和小数部分转换成二进制:20.59375=10100.10011然后移动小数点,使其在第1、2位之间10100.10011=1.010010011×24

小数点被左移了4位,于是得到:e=4尾符S=0,阶码E=4+127=131,尾数M=010010011最后得到32位浮点数的二进制代码:01000001101001001100000000000000

=(41A4C000)16[例]

将十进制数20.59375转换成IEEE754的32位标准浮点数的2进制格式,并写出相应的16进制数。32/322.2字符表示方法2.2.1ASCII码ASCII(AmericanStandardCodeforInformationInterchange)。字符总数:128包含数字0~9,大小写英文字母,运算符,标点符号,标示符,格式控制符等等。代码宽度:7b存储宽度:7b(有效位)+1b(奇偶校验位)=8b33/7ASCII码示例16进制30313233343536373839数字0123456789①数字型②字符型16进制4142434445464748494A字符ABCDEFGHIJ③其它型16进制2528292A3C3D3E3F407F字符%()*<=>?@DEL34/72.2.2汉字编码1.汉字的输入码35/7①数字输入码包括:数字码、拼音码、字形码√常用的是国标区位码,用数字串代表汉字;√将6763个二级汉字分为94个区,每区94位,把汉字表示成二维数组,数组下标就是区位码。※数字编码输入的优缺点:无重码,输入码与内部码的转换方便,代码难以记忆。[例]平↔3829(位于码表38区、29位)以汉字拼音为基础的输入方法(如微软拼音)根据汉字的书写形状来进行编码(如五笔字型)。②拼音输入码√简单方便;√同音字多,重码率高,影响输入速度。※拼音输入码的优缺点:③字形输入码√把汉字的笔划部件用字母或数字进行编码,按笔划顺序依次输入,就能对应一个汉字。√简单方便,符合书写习惯;√重码率高,需要记住字形结构。※字形输入码的优缺点:36/72.汉字的内码国标码:10进制区位码转成16进制,再加2020H用于汉字信息的存储、交换、检索等操作的计算机内代码,一般用两个字节表示。机内码:国标码+8080H(与ASCII区别),或者区位码转成16进制+A0A0H√机内码的基础是国标码[例]“啊”的区位码160110=1001H国标码=1001H+2020H=3021H机内码=1001H+A0A0H=B0A1H37/73.汉字字模码字模码用点阵表示的汉字字形代码,是汉字的输出形式。38/7例如:字模码汉字的字模码为:16×16位=32字节※特别说明:39/7①字模点阵用来构成汉字库,并非而机内存储。②字库中存储每个汉字的点阵代码,用于汉字的显示输出或打印输出。③当显示输出或打印输出时才检索字库,输出字模点阵,得到字形。√汉字的输入码、内码、字模码分别是用于计算机输入、内部处理、输出三种不同用途的编码;√各有用途,不能混为一谈。2.3数据处理与存储40/1110011111、移位操作(1)逻辑移位

:数码位置变化。(2)算术移位

10001111循环左移::符号位不变、数码位置变化算术左移:1

10

(-15)(-30)000111101111数值发生2n倍变化,n为移动的位数空位补041/11(1)单符号位:0011101110

(2)双符号位:001110

000111①正数补码\原码移位规则※移位规则左移右移右移0

01110

0011左移左移右移右移011100

001110000111数符不变(单:符号位不变;双:第1符号位不变)空位补0(右移时第2符号位移至尾数最高位)42/11(2)单符号位:1101110110

(3)双符号位:101100

110110②负数补码移位(1)移位规则左移右移右移1

10111

1101左移右移右移110110111011数符不变(单:符号位不变;双:第1符号位不变)左移空位补0(第二符号位移至尾数最高位)。右移空位补143/11※易出错处:00

1110左右011100正确:11

0110101100001100011100

000110正确:00

1110111100左正确:101100

111110右11

0110正确:44/112、舍入方法①0舍1入(原码、补码)000100原

100101原

111011补

②末位恒置1(原码、补码)000100原

111011补

100101原

00010原

10011原

11110补

00011原

10011原

11101补

[例]保留4位尾数:[例]保留4位尾数:45/110000000A000AFFFF800A800A0000002A002A0000F12CF12C直接把符号位(0/1)填充到扩展位高位均全补03、数位扩展与压缩(1)符号扩展(2)0-扩展(3)位数压缩弃高位、留低位F12B800A02A0F12C800AF12C(针对无符号数)46/114、数据存储(按字节编址)(1)小端模式/Little-Endian小地址单元存储数据的低位(即尾端)#103#102#101#100FFFF0001FFFF0001(2)大端模式/Big-Endian大地址单元存储数据的低位(即尾端)#103#102#101#100FFFF00010100FFFF47/115、数据字的对齐(Alignment)48/11要求数据的地址是相应的边界地址

※按边界对齐(假定存储字宽度为32位,按字节编址,字长32位)

字地址:4的倍数(低两位为0)

半字地址:2的倍数(低位为0)

字节地址:任意※不按边界对齐

例如inti,shortk,doublex,charc则&i=0;&k=4;&x=8;&c=16则&i=0;&k=4;&x=6;&c=14;ikxc按字边界对齐不按边界对齐0004081216字节0字节1

字节2

字节3ikxc试分析访存次数的变化情况字节0字节1字节2字节3000408121649/11

思考下列问题:1、在32位机器上输出si,usi,i,ui的十进制(真值)和十六进制值(补码机器数)是什么?shortsi=-32768;unsignedshortusi=si;inti=si;unsingnedintui=usi;已知32768=215=1000000000000000B2、某机存储器按字节编址,字长32位,欲存储俩数shortfloatf1=-256,f2=-128.75。试分析在地址码为#1000存储单元的小端字对齐存储模式。50/112.4基本运算方法补码(+、–、×、÷)原码(+、–、×、÷)浮点数运算移码(+、–)定点数运算51/472.4.1定点数的运算定点数一般用补码表示;符号位参加运算。重点:基于补码的加、减乘、除法52/471.补码的加减法(X+Y)补=X补+Y补(1)(X-Y)补=X补+(-Y)补(2)数学依据:(X+Y)补=X+Y+2n=X+Y+2n+2n=X补+Y补全过程以2n为模,即除以2n后取余数。(X-Y)补=X-Y+2n=X-Y+2n+2n=X补+(-Y)补其中,(-Y)补=[Y补]变补Y的符号置反后再表示成补码Y补连同符号一起变反、末尾+153/472)X=–3Y=–2

X补=11101

Y补=1111011011(-5补码)1)X=3Y=2

X补=00011

Y补=0001000101(+5补码)【例】求(X+Y)补1)X=4Y=–5

X补=00100

Y补=11011(-Y)补=0010101001(+9补码)2)X=–4Y=5

X补=11100

Y补=00101(-Y)补=1101110111(–9补码)【例】求(X–Y)补

X补=00100

Y补=11011

X补=11100

Y补=0010154/4700101原10101原※补码表示与变补运算的区别补码表示10011补变补运算补码表示符号位不变负数尾数改变,正数尾数不变。00011补变补运算符号位变反,尾数变反、末尾加1【举例】11011001010110111101(-Y)补也称为Y补的机器负数。55/47(2)补码加减运算流程操作数用补码表示,符号位参加运算得到补码表示的结果,符号位指示结果的正负X补+Y补X补+(-Y)补ADDSUB56/47(3)逻辑实现#控制信号加法器输入端:Sub:控制MUX和CinA:输入A补B:输入B补加法器输出端:Sum:加法结果Cout:进位信号#补码加减运算器框图MUXSum加法器444AZFCinCout4B401SubBOF补码加/减运算部件逻辑SFCFB'ZF:0标志位;SF:符号标志;CF:进位/借位标志;OF:溢出标志。57/47(4)溢出判断思考:在什么情况下可能产生溢出?A:4位尾数,1位符号(SA)B:4位尾数,1位符号(SB)

补码,故符号位也参加运算结果的符号,记为Sf符号位的进位,记为Cf尾数最高位的进位,记为C[假设]补码表示的A、B两数做加减运算*溢出的判断规则58/470011011100正确00011000101)A=3、B=23+2:001012)A=10、B=710+7:010100011110001正溢正确负溢正确正确3)A=-3、B=-2-3+(-2):1101111101111104)A=-10、B=-7-10+(-7):01111101101

10015)A=6、B=-46+(-4):000106)A=-6、B=4-6+4:11110110100010059/470

101000111(2)A=10B=710+7:10001(4)A=-10B=-7-10+(-7):011111011011001①硬件判断逻辑一(根据SA、SB与Sf的关系)+溢出逻辑=SASBSf②硬件判断逻辑二(根据Cf与C的关系)正溢负溢SASBSf60/47正确00011000101)A=3B=23+2:001012)A=10B=710+7:010100011110001正溢正确负溢正确正确3)A=-3B=-2-3+(-2):1101111101111104)A=-10B=-7-10+(-7):0111110110110015)A=6B=-46+(-4):0001000110111006)A=-6B=4-6+4:111101101000100Cf=0C=0Cf=0C=1Cf=1C=1Cf=1C=0Cf=1C=1Cf=0C=011111161/47②硬件判断逻辑二(Cf与C的关系)溢出逻辑=Cf⊕C③硬件判断逻辑三(从双符号位)①硬件判断逻辑一(SA、SB与Sf的关系)+溢出逻辑=SASBSfSASBSf62/471)3+2:正确00001100001000

01012)10+7:001010000111010001正溢正确负溢正确正确3)-3+(-2):1110111111011111104)-10+(-7):1011111101101110015)6+(-4):0000100001101111006)-6+4:11

111011

1010000100第1符号位Sf1第2符号位Sf263/47③硬件判断逻辑三(双符号位Sf1、Sf2)溢出逻辑=Sf1⊕Sf2②硬件判断逻辑二(Cf与C的关系)溢出逻辑=Cf⊕C①硬件判断逻辑一(SA、SB与Sf的关系)+溢出逻辑=SASBSfSASBSf00/11-正确;01-正溢;10-负溢;64/472、原码加减运算[符号位单独处理、数值位加减]

先比较两数符号:①加法:同号数值位求和,异号求差;②减法:异号数值位求和,同号求差;※求和时:数值位相加,和的符号取被加数(被减数)符号[若最高位产生进位,则结果有溢出。※求差时:被加数(被减数)与加数(减数)求补后相加。⊙最高数值位有进位,相加结果为正,数值位正确;符号取被加数(被减数)的符号。⊙最高数值位无进位,相加结果为负,得到数值位的补码,需对结果求补还原为绝对值形式的数值位;符号位与被加数(被减数)的符号相反。65/473原+2原3原+[-2]原3原-2原3原-[-2]原求和求差[例]已知[X]原

=1.0011,[Y]原

=1.1010,计算[X+Y]原解:由原码加减运算规则知:同号相加,则求和,和的符号同被加数符号。和的数值位为:0011+1010=1101和的符号位为:1

[X+Y]原

=1.1101[例]已知[X]原

=1.0011,[Y]原

=1.1010,要求计算[X–Y]原

解:由原码加减运算规则知:同号相减,则数值位求差

差的数值位为:0011+(1010)求补

=0011+0110=1001

最高数值位无进位,表明加法结果为负,需对1001求补,还原为绝对值形式的数值位。即:(1001)求补=0111差的符号位为[X]原的符号位取反,即

[X–Y]原

=0.011166/473、标准移码的加减[符号位和数值部分一起处理][E1]移+[E2]移=2n-1+E1+2n-1+E2=2n+E1+E2

=[E1+E2]补(mod2n)=E1补+E2补=

(E1移+E2移)反号[E1]移–[E2]移=2n-1+E1+2n–[E2]移

(mod2n)

=2n-1+E1+2n–2n-1–E2

=2n+E1–E2=[E1–E2]补(mod2n)=E1补+(E2)变补67/47[重要结论]两数移码的加减等于两数加减后表示成的补码。※补码和移码:符号位相反、数值位相同①加法:直接将[E1]移和[E2]移进行模2n加,结果的符号取反。②减法:先将减数[E2]移求补,然后再与被减数[E1]移进行模2n加,结果的符号取反。因此,可得到移码的下列加减法则:[溢出判断]进行模2n相加时,如果两个加数与和数符号全相同,则发生了溢出。68/47[例]用4位移码计算“–7+(–6)”和“–3+6”的值。[–7]移

=0001[–6]移=0010 [–3]移=0101 [6]移=1110[–7]移+[–6]移

=0001+0010=0011补

(符号都为0,有溢出)[–3]移

+[6]移

=0101+1110=0011补,(符号取反后为1011,其真值为+3)思考:[–7+(–6)]移=?

[–3+(6)]移

=?69/47[例]用四位移码计算“–7–(–6)”和“–3–5”

[–7]移

=0001[–6]移=0010

[–3]移=0101 [

5

]移=1101

[–7]移

–[–6]移

=0001+1110=1111补

符号取反后为0111,其真值为–1。

[–3]移

–[

5

]移

=0101+0011=1000补符号取反后为0000,其真值为–870/472.4.2定点数乘法√原码一位乘√补码一位乘√原码两位乘71/471、原码一位乘原码乘法部分积累加、移位。[例]

0.1101×1.1011乘积

P

=|X|×|Y|X原Y原符号SP=SX⊕SY72/47手工运算0.1101×0.10111101110100001101.10001111添加符号:1.10001111部分积思考:1)加数的个数增多情况2)加数的位数增多的情况解决办法:可将1次总加改为分步移位累加←|X|←|Y|①加数只为|X|或0②个数为|Y|的位数73/47原码1位乘法(1)算法原理[每次将1位乘数所对应的部分积与原部分积的累加和相加,并移位]设置寄存器:

A:存放部分积累加和、乘积高位

B:存放被乘数

C:存放乘数、乘积低位

A=00.0000B=|X|=00.1101C=|Y|=.1011

设置初值:74/47步数CR条件操作A

C

00.0000.1011

0)Cn=1+BCn+00.110100.1101

0.1101×0.1011

1101110100001101

0.10001111BC

1101

00.01101.101

0.1101×0.10111)Cn=1+B+00.110101.001100.100111.10

0.1101×0.1011

0.1101×0.1011

1101110100001101

0.10001111BC2)Cn=0+0+00.000000.100100.0100111.13)Cn=1+B+00.110101.000100.10001111X原×Y原

=1.10001111101111011110111175/47(2)算法流程0→A、0→CR、|X|→B、|Y|→CCn=1?CR=n?1/2(A+B)→A,C1/2(A+0)→A,C

CR+1→CRYYNNSX⊕SY→SA76/47选择(3)32位硬件逻辑方案加法器AC寄存器控制逻辑clock0/BCnAC[63:32]AC[63:32]T=0:|X|→B,|Y|→AC[31:0],0→AC[63:32]32位BT=1:AC[63:32]+0/B→AC[63:32],AC右移T=2:T=n:同上,然后置符号。…Wn

右移SxSy64位的移位寄存器Cn=AC[0]77/472.补码一位乘法※Booth(比较法)Yn

(高位)Yn+1(低位)运算操作[XY]补=[An]补+(Y1-Y0)×[X]补*乘数尾添加Yn+1,循环判别YnYn+1,累加如表情况的的校正值,再整体右移1位(即½×

)。78/4700½×A补01½×

(A补+X补)10½×(A补-X补)11½×A补Y0[例]

X=-0.1101,Y=-0.1011,计算[XY]补初始化A=00.0000,ACCn+100000010101步数

CnCn+1条件操作1

1

0

-B+0011010011010

011011010

1101010右移1位→2

0

1

+B+1100111110011

1100110101右移1位→11101

079/47B=X补=11.0011,-B=-X补=001101

C=Y补=1.01010011001000步数

CnCn+1条件操作3

1

0

-B+001101100100100100

111101111010右移1位→4

0

1

+B+

1100111101111

1011

111110111101右移1位→11110011101

0

1

0

-B+001101111110[XY]补=0010001111=

+0.1000

1111保持不变!!80/4701校正.(请参考教材)※补码1位乘法除了比较法,还有校正法。①乘数Y补为正,乘以X补累加,结果不校正;②乘数Y补为负,乘以X补累加,结果-X补校正;81/472.4.3

定点数的除法√补码不恢复余数除法√原码恢复/不恢复余数除法√补码恢复余数的除法82/471.补码不恢复余数除法[算法思想]被除数X补、除数Y补、余数ri,

i=0、1…初始化:令r0=X补,比较r0与Y补符号,同号上商1,异号上商0×2↔左移1位ri、Y补数符商对应操作[-Y补]↔+[Y补]变补商修正:循环:i=1…n,按下表条件决定每步操作余数修正:(|X|<|Y|)83/47同号异号10ri+1=2×[ri]补-Y补ri+1=2×[ri]补+Y补符号位+1,末尾恒置1左移了n次,则余数=2-n×rn1

0000101

000110[例]X÷Y=+0.1000÷(-0.1010)=?R=X补=001000,001000000001r0Y补异号2r1Y补异号2r0

/←

+110110010000

00000+Br12r1

/←

001100

00000+B+110110r2r0上商0000110000000步数条件操作被除数余数

商Q上商084/47B=Y补=110110,-B=001010,Q=000000111010R=X补=001000,B=Y补=110110,-B=0010103r2Y补异号2r2

/←

+B4r3Y补同号r32r3

/←

111010

000000001000000r200010000000+110110上商0商校正:

-B+001010111110余数:00001000000110100

000102-4×

r4r4数符+1、末尾恒置1上商1

10011补

85/4701+1置1左移了4位2.4.4IEEE754浮点四则运算浮点运算的实现:低档微机,通过子程序中档微机,通过浮点处理器(协处理器)高档微机,通过专门的浮点运算部件86/47[以IEEE754浮点数为例]浮点数运算→尾数运算、阶码运算原码移码加减乘除加减87/470、IEEE754短浮点数阶码的加减①Ex和Ey分别是两数阶码,Eb是结果阶码,则:Eb=Ex+Ey+129(mod28)原理推导:88/47阶码用非标准移码表示(仅偏移2n-1-1=127)[Ex+Ey]移

=127+(Ex+Ey)=[Ex]移

+[Ey]移

+10000001=(127+Ex)+(127+Ey)–127=[Ex]移+[Ey]移–127

=[Ex]移+[Ey]移+127求补=[Ex]移+[Ey]移+(-127)补=[Ex]移

+[Ey]移

+129(mod28)②Ex和Ey分别是两数阶码,Eb是结果阶码,则:Eb=Ex-Ey=Ex+[–Ey]补+127(mod28)原理推导:89/47[Ex–Ey]移

=127+(Ex–Ey)(mod28)=127+Ex-Ey-127+127=[Ex]移–[Ey]移

+127=[Ex]移+(–[Ey]移)补+01111111=[Ex]移+([Ey]移)求补+01111111(mod28)或者mod28,等价于忽略最高位的进位。[例]若两个阶码分别为10和-5,求10+(-5)和10-(-5)Ex=127+10=137=10001001Ey=127+(–5)=122=01111010[–Ey]补=10000110Eb=Ex+Ey+129

=10001001+01111010+10000001

=10000100

=132(mod28)

=+5

正确Eb=Ex+[Ey]求补

+127

=10001001+10000110+01111111=10001110

=142(mod28)

=+15正确90/471000100101111010+

100000011

10000100

1000100110000110+

01

11

11111

10001110

1、浮点的加减运算浮点加减法的思路:假设:A=2AE×AM,B=2BE×BM

A+B=(AM+BM)×2E

调整阶码和尾数:AE→E←BE、AM、BM

浮点数的加减→移位操作→尾数原码加减91/47[目的]使两数阶码相等(小数点实际位置对齐,尾数对应权值相同)。[规则]22×0.100123×0.110123×0.010123×0.1101小阶向大阶对齐。判操作数是否为0尾数为0阶码下溢(归0)(3)对阶(1)检测能否简化操作(2)计算阶差92/47补1以减小误差(4)尾数加减.※阶码比较:比较线路或减法。※对阶操作:小阶的阶码增大,尾数右移。[例]AE>BE,则BE+1→BE,BM,直到BE=AEAM±BM→AM(5)结果规格化

|M|<1|M|

≥2应左移规格化应右移规格化尾数M左右移动,使:1≤|M|<293/47溢出判断94/47以下情况下,可能会导致阶码溢出左规(阶码-1)时

左规时:先判断阶码是否为全0,若是,则直接置阶码下溢;否则,阶码减1后判断阶码是否为全0,若是,则阶码下溢。右规(阶码+1)时右规(+1)时,先判断阶码是否为全1,若是,则直接置阶码上溢;否则,阶码加1后判断阶码是否为全1,若是,则阶码上溢。[例]已知x=0.5,y=-0.4375,求x+y=?

x=0.5=1/2=(0.100...0)2=(1.00...0)2×2-1

y=-0.4375=(-0.01110...0)2=(-1.110..0)2×2-2[x]浮=0

01111110,000…00

[y]浮=1

01111101,110…00求阶差、对阶:ΔE移=01111110-

0111

1101+127e=128-127=+1故对y进行对阶:[y]浮=101111110

1110…00尾数真值相加:01.0000...00

+(10.1110...00)(原码加法:异号求差,加数变补后求和)左规:+0.00100…00×2-1=+1.00…0×2-4

[x+y]浮=0

0111101100…00

=+0.0625

95/470111111010000011+

01

11

11111

10000000

=10000000=1281.0000…00+1.0010…001

0.0010…00

=00.00100…00

<1求补求补2、浮点数的乘法※运算步骤:①求阶和AE+BE浮点乘法→分解成:移码加法、原码乘法;②尾数相乘,设:A=2AE×AM,B=2BE×BM

则:A×B=(AM×BM)×2AE+BE

③结果规格化。④其它处理:如舍入、置0、阶码溢出判断不需左规!最多右规1次!96/473、浮点数的除法※运算步骤:浮点除法→分解成:移码减法、原码除法设:A=2AE×AM,B=2BE×BM

则:A÷B=(AM/BM)×2AE-BE①求阶差AE-BE②尾数相除,③结果规格化。需右规??④其它处理:如舍入、置0、阶码溢出判断97/472.5数据的校验(1)奇偶校验(2)海明校验(3)循环冗余校验98/18待编码信息10110001奇校验编码10110001偶校验编码10110001102.5.1奇偶校验校验位(1)编码规则增设1位校验位,从而使1的个数是奇或偶数5个“1”4个“1”99/18(2)偶校验电路逻辑++++D7D6+D5D4+D3D2+D1D0+偶形成校验输出校验位偶校验逻辑电路图11111101110正确,或者有偶数位错000110100/18++++D7D6+D5D4+D3D2+D1D0+偶形成校验输出校验位※任何1个数,减去1个偶数,其奇偶性不变11111101101输出1:有奇数位错1001110所以奇偶校验均不能发现偶数位错,也无法定位错误101/182.5.2海明校验√是一种多重分组奇偶校验;(1)分成几组?每组包含多少校验位?[假设]待编码信息K位,分成r组,每组1个校验位√将代码组织为若干分组,每组进行奇偶校验;√能够检验是否出错,也能定位出错位;校验码位数:r位;海明编码总长:N=k+r位;海明编码时:各组单独进行奇偶校验编码,以确定各组的校验位。102/18※各参数应满足:若k

=

4,则r

3满足上述定理,可组成7位海明码。代码检验时:每组能产生1个指误码→

r位指误码→

2r种可能的指误代码指误码为全0其余(2r-1)种指误代码:比如:G3G2G1G0如0000、0001、0010、….

←→

海明编码无错;→分别用于指示(2r-1)种只有1位错的情况≤2r-1N=k+r103/18(2)分组方法1234567指误码P1P2A1P3A2A3A4第3组第2组第1组数据码1位错有效信息:A1A2A3A4,校验位:P1P2P3,偶校验方式101G3G2G1=000G3G2G1=101101101010101如果有多位数字发生错误呢?G3G2G1=101G3G2G1=1015需增加分组扩大码距!(k=4,r=3)编码的海明距离:d=3;第5位错√√√√√√√√√√√√G3G2G1104/18(3)编码规则每组均采用偶校验,填入校验码,组内具有偶数个1[例如]4比特有效码(待编码数据)1001(4)检错与纠错[例如]读取到数据:0011011增加分组,能提高检错和纠错能力(k=4,r=3)海明编码:0011001(黄色的为检验码)指误码:据此推断第6位出错,第3组0011011G3=1第2组0011011G2=1第1组0011011G1=0G3G2G1=1102=610001101100110110011001定位+纠错105/182.5.3循环冗余校验[校验原理]用待校验数据除以某个约定代码,能除尽则表明数据正确,否则通过循环移位校正出错位。(1)编码方法即CRC,CyclicRedundancyCheck;①将待编码的k位有效数据M(x)左移r位得到全编码多项式M(x)·xr,空出r位,以装填r位余数;②选取一个r+1位的生成多项式G(x),对M(x)·xr进行模2除运算,得到商Q(x)和余数R(x)的代码;③将左移r位的待编码信息,与余数R(x)模2加,可拼接成为包含有效数据在内的CRC编码。106/18[例]将4位有效信息(1100)编成CRC码,使用生成多项式为代码(1011)待编码数据:1100(k=4),则M(x)=1x3+1x2+0x1+0※CRC编码过程:生成多项式代码:1011,则G(x)=1x3+0x2+1x1+1余数的位数r:等于G(x)中最高项的指数,r=3得到:M(x)·xr=(x3+x2)·x3=1x6+1x5+0x4+0x3+0x2+0x1+0①先确定G

温馨提示

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

评论

0/150

提交评论