计算机组成原理第章运算方法与运算器课件_第1页
计算机组成原理第章运算方法与运算器课件_第2页
计算机组成原理第章运算方法与运算器课件_第3页
计算机组成原理第章运算方法与运算器课件_第4页
计算机组成原理第章运算方法与运算器课件_第5页
已阅读5页,还剩148页未读 继续免费阅读

下载本文档

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

文档简介

第2章运算方法和运算器21七月20232目录2.0数据的类型2.1数据与文字的表示方法(掌握)2.2定点加法、减法运算(掌握)2.3定点乘法运算(了解)2.4定点除法运算(了解)2.5定点运算器的组成(了解)2.6浮点运算方法和浮点运算器(掌握)21七月20233学习要求掌握定点和浮点数的表示方法,表示范围;掌握定点数的补码加减法、了解常用的乘除法运算方法;掌握浮点数的加减运算方法;理解数据校验的方法;理解溢出判断方法;了解运算器部件的组成结构及设计方法。21七月202342.0数据的类型(1/2)按数制分:十进制:在微机中直接运算困难;二进制:占存储空间少,硬件上易于实现,易于运算;十六进制:方便观察和使用;二-十进制:4位二进制数表示1位十进制数,转换简单。按数据格式分:真值:没有经过编码的直观数据表示方式,其值可带正负号,任何数制均可;机器数:符号化后的数值(包括正负号的表示),一般位数固定(8、16、32……),不能随便忽略任何位置上的0或1;21七月202352.0数据的类型(2/2)按数据的表示范围分:定点数:小数点位置固定,数据表示范围小;浮点数:小数点位置不固定,数据表示范围较大。按能否表示负数分:无符号数:所有均为表示数值,直接用二进制数表示;有符号数:有正负之分,最高位为符号位,其余位表示数值。按编码不同又可分为原码、反码、补码、移码……21七月202362.1数据与文字的表示方法2.1.1数据格式2.1.2数的机器码表示2.1.3字符与字符串的表示方法2.1.4汉字的表示方法2.1.5校验码21七月20237定点数:小数点固定在某一位置的数据;纯小数:表示形式

x=xSx-1x-2…x-n

|x|≤1-2-n

;xs为符号位数据表示范围0.0…0=0≤|x|≤1-2-n=0.1…1纯整数:表示形式

x=xsxn-1…x1

x0|x|≤2n-1;xs为符号位注意:小数点的位置是机器约定好的,并没有实际的保存。x0x-1x-2x-3……x-nxnxn-1xn-2……x1x02.1.1数据格式——定点数设采用n+1位数据21七月202382.1.1数据格式——浮点数浮点数:小数点位置可变,形如科学计数法中的数据表示。浮点数格式定义:N=Re×MM:尾数(mantissa),是一个纯小数,表示数据的全部有效数位,决定着数值的精度;R:基数(radix),可以取2、8、10、16,表示当前的数制;微机中,一般默认为2,隐含表示。e:阶码(exponent),是一个整数,用于指出小数点在该数中的位置,决定着数据数值的大小。浮点数的一般表示形式阶符阶码数符尾数数符阶符阶码尾数21七月20239科学计数法的表示一个十进制数可以表示成不同的形式:同理,一个二进制数也可以有多种表示:21七月202310浮点数规格化浮点数的表示1.11×20=0.111×21=11.1×2-1机器数的表示不同,不利于运算规格化的目的保证浮点数表示的唯一性;保留更多地有效数字,提高运算的精度。规格化要求|尾数|≥0.5;规格化处理:尾数向左移n位(小数点右移),同时阶码减n;尾数向右移n位(小数点左移),同时阶码加n。规格化右规左规21七月202311浮点数的规格化尾数用原码表示时尾数最高数值位为1;尾数形如0.1××…×(正);或1.1××…×(负);例如,0.011×25要规格化则变为0.11×24;-0.011×25要规格化则变为1.11×24;尾数用补码表示时尾数最高数值位和尾数符号位相反;尾数形如0.1××…×(正);或1.0××…×(负)例如,0.011×25要规格化,则变为0.11×24;-0.011×25要规格化,则变为1.01×24;21七月202312例:将十进制数-54表示成二进制定点数(16位)和浮点数(16位,其中数值部分10位,阶码部分4位,阶符和数符各取1位),并写出它在定点机和浮点机中的机器数形式。令x=-54,则x=-11011016位定点数真值表示:x=-000000000110110定点机器数形式

[x]原:

[x]补:浮点数规格化表示:x=-(0.1101100000)×2110浮点机器数形式

[x]原:

[x]补:1000000000110110111111111100101000110;1110110000000110;1001010000021七月202313浮点数的IEEE754标准表示IEEE(InstituteofElectricalandElectronicsEngineers)美国电气及电子工程师学会IEEE是一家总部在美国的工程技术和电子专家的组织;IEEE致力于电气、电子、计算机工程和与科学有关的领域的开发和研究,也是计算机网络标准的主要制定者。为便于软件移植,按照IEEE754标准,实际机器内32位浮点数和64位浮点数的标准格式如下:022233031SEM23位尾数,仅为数值部分8位阶码,包括阶符1位数符32位浮点数051526263SEM64位浮点数21七月202314单精度浮点数与双精度浮点数高级语言的float、double使用的即是IEEE754规定的格式。float:32位浮点值,也叫单精度浮点数(4字节保存)double:64位浮点值,也叫双精度浮点数(8字节保存)单精度浮点数的例子:1位8位7位8位8位-11000.0121七月20231532位浮点数的IEEE754标准表示数符S:表示浮点数的符号,占1位,0—正数、1—负数;尾数M:23位,原码纯小数表示,小数点在尾数域的最前面;由于原码表示的规格化浮点数要求,最高数值位始终为1,因此该标准中隐藏最高数值位(1),尾数的实际值为1.M;阶码E:8位,采用有偏移值的移码表示;E=e+127,其中e是指数真值浮点数的真值:N=(-1)S×(1.M)×2E-127数符S阶码E尾数M21七月202316IEEE754标准格式(64位格式)其真值表示为:

x=(-1)S×(1.M)×2E-1023e=E-102321七月202317IEEE754标准的数据表示IEEE754标准中的阶码E正零、负零E与M均为零,正负之分由数据符号确定;正无穷、负无穷E为全1,M为全零,正负之分由数据符号确定;阶码E的其余值(00000001~11111110)为规格化数据;真正的指数e的范围为-126~+127E=00000000,M=0000…0000E=11111111,M=0000…000000000000~1111111121七月202318IEEE754标准对特殊数据的表示符号位S阶码E尾数M数值N0/10=000/10≠0(-1)S×(0.M)×2-1260/11~254≠0(-1)S×(1.M)×2E-1270/1255≠0NaN(非数值)0/1255=0(-1)S×∞(无穷大)21七月202319课本P18例1[例1]若浮点数x的754标准存储格式为(41360000)16,求其浮点数的十进制数值。解:(41360000)16=0100

00010011

01100000000000000000指数e=E-127=10000010

-01111111=00000011=3尾数1.M=1.011

01100000000000000000=1.011011浮点数N=(-1)S×(1.M)×2e

=(-1)0×(1.011011)×23

=(11.375)10数符S阶码E尾数M21七月202320课本P18例2[例2]将(20.59375)10转换成754标准的32位浮点数的二进制存储格式。解:(20.59375)10=(10100.10011)2将尾数规范为1.M的形式:

10100.10011=1.010010011×24

e=4可得:M=010010011

S=0

E=4+127=131=10000011故,32位浮点数的754标准格式为:

01000001

1010

01001100

000000000000=(41A4C000)16

21七月202321求解技巧例如:将下列十进制数表示成IEEE754格式的32位浮点数二进制存储形式。27/3211/512求解:27/32=27*(1/32)=(00011011)2*2-5尾数:1.1011 ; 阶码:e=-5+4=-1,E=e+127=126IEEE754数据:0011111101011000000000000000000011/512=(00001011)2*2-9尾数:1.011 ; 阶码:e=-9+3=-6,E=e+127=121IEEE754数据:0011110010110000000000000000000练习:

1、将20.1875转换成32位浮点数存储?

2、若浮点数的二进制存储格式为(41A18000)16,求其十进制值?作业:将十进制数17.296875转换成IEEE754格式的32位浮点数的二进制存储。课堂练习和补充习题21七月2023232.1.2数的机器码表示重点:

1、原码、补码、移码的表示形式

2、补码的定义

3、原码、补码、移码的表示范围21七月2023241、原码表示法——定义定义:定点小数: [x]原=定点整数: [x]原=举例:[+0.110]原=0.110[-0.110]原=1-(-0.110)=1.110[+110]原=0110[-110]原=23-(-110)=1000+110=1110x 1>x≥01-x=1+|x| 0≥x>-1x 2n>x≥02n-x=2n+|x| 0≥x>-2n实际机器中保存时并不保存小数点21七月2023251、原码表示法——特点0有两种表示法[+0]原

=0000; [-0]原

=1000数据表示范围定点小数:-1<X<1定点整数:-2n<X<2n

(若数值位n=3即:-8<X<8)优点与真值对应关系简单;缺点参与运算复杂,需要将数值位与符号位分开考虑。21七月202326要将指向5点的时钟调整到3点整,应如何处理?5-2=35+10=3(12自动丢失。12就是模)补码表示法的引入(1/3)21七月202327继续推导:5-2=5+10(MOD12)5+(-2)=5+10(MOD12)-2=10(MOD12)结论:

在模为12的情况下,-2的补码就是10。一个负数用其补码代替,同样可以得到正确的运算结果。补码表示法的引入(2/3)21七月202328进一步结论:在计算机中,机器能表示的数据位数是固定的,其运算都是有模运算。若是n位整数,则其模为2n;若是小数,则其模为2。若运算结果超出了计算机所能表示的数值范围,则只保留它的小于模的低n位的数值,超过n位的高位部分就自动舍弃了。补码表示法的引入(3/3)21七月2023292、补码表示法——定义定义:定点小数:[x]补=定点整数:[x]补=举例:[+0.110]补=0.110[-0.110]补=10+(-0.110)=1.010[+110]补=0110[-110]补=24+(-110)=10000-110=1010x 1>x≥02+x=2-|x| 0≥x≥-1x 2n>x≥02n+1+x=2n+1-|x|0≥x≥-2nx为n+1位(mod2)(mod2n+1)实际机器中保存时并不保存小数点21七月2023302、补码表示法——特点0有唯一的表示法[-0]补=[24+(-0)]mod24

=0000=[+0]补数据表示范围定点小数:-1≤X<1定点整数:-2n≤X<2n

(若n=3,则-8≤X<8)加减运算规则[X±Y]补=[X]补±[Y]补

(mod2)只要结果不溢出,可将补码符号位与数值位一起参与运算。[[x]补]补=[x]原补码除2操作,可通过算术右移实现[-0.0110]补=11010,则[(-0.0110)/10]补

=11101,真值为-0.0011比原码多一个负的最小值表示,其编码为100021七月202331由原码求补码由原码求补码的简便原则(负数)除符号位以外,其余各位按位取反,末位加1;从最低位开始,遇到的第一个1以前的各位保持不变,之后各位取反。例:[X]原=110110100[X]补=10100110021七月202332由[X]补求[-X]补连符号位一起各位求反,末位加1。例:[X]补=1.1010101解:由[-X]补求[X]补,此规则同样适用。求相反数的补码[X]补=1101010100101010+1[-X]补=0010101121七月2023333、移码表示法移码通常用于表示浮点数的阶码用定点整数形式的移码定义:

[x]移=2n+x 2n>x≥-2n与[x]补的区别:符号位相反优点:可以比较直观地判断两个数据的大小;浮点数运算时,容易进行对阶操作;表示浮点数阶码时,容易判断是否下溢;当阶码为全0时,浮点数下溢。真值补码移码-810000000-710010001-610100010………………000001000+100011001………………+7011111114位补码与移码21七月202334原、补、移码的编码形式正数:原、补码的编码完全相同;补码和移码的符号位相反,数值位相同;负数:原码:符号位为1

数值部分与真值的绝对值相同补码:符号位为1

数值部分与原码各位相反,且末位加1移码:符号位与补码相反,数值位与补码相同21七月202335课本P22例6

以定点整数为例,用数轴形式说明原码、反码、补码、移码表示范围和可能的数码组合情况。21七月20233621七月202336课本P22例7

将十进制真值(-127,-1,0,+1,+127)列表表示成二进制数及原码、反码、补码、移码值。十进制真值二进制真值原码表示反码表示补码表示移码表示-127-111111111111111100000001000000100000001-1-0000001100000011111111011111111011111110+000000000000000000000000000000010000000-00000001000000011111111+1+000000100000001000000010000000110000001+127+111111101111111011111110111111111111111符号位

+0;-1数值位

各位取反数值位

末位加1符号位(正负数)取反负数时21七月202337P22例8

设机器字长16位,定点表示,尾数15位,数符1位,问:

(1)定点原码整数表示时,最大正数是多少?最小负数是多少?

(2)定点原码小数表示时,最大正数是多少?最小负数是多少?0111111111111111111111111111111101111111111111111111111111111111(215-1)=+32767-(215-1)=-32767(1-2-15)=+(1-1/32768)-(1-2-15)=-(1-1/32768)定点原码整数最大正数 最小负数 定点原码小数最大正数 最小负数21七月202338补充:浮点数的数据表示范围0最大负数最小正数最小负数最大正数下溢区上溢区上溢区负数区正数区尾数负的最小值负的最大值正的最小值正的最大值阶码正的最大值负的最小值负的最小值正的最大值浮点数的溢出:阶码溢出上溢:阶码大于所能表示的最大值;下溢:阶码小于所能表示的最小值;机器零:尾数为0,或阶码小于所能表示的最小值;21七月20233901…101…11519【例1】设浮点数的阶码6位(含符号位),尾数为10位(含符号位),阶码采用补码表示,尾数采用原码表示,分析其浮点数表示范围。最大正数:阶码正最大、尾数正最大最大正数为0.11…1×2011…1

即(1-2-9)×231该浮点数即为规格化数形式;21七月202340【例1】设浮点数的阶码6位(含符号位),尾数为10位(含符号位),阶码采用补码表示,尾数采用原码表示,分析其浮点数表示范围。最小正数:阶码负最小、尾数正最小非规格化数形式最小正数为0.0…01×210…0即2-9×2-(25)=2-9×2-32规格化数形式最小正数为0.1×210…0

2-1×2-(25)=2-3310…001…00151910…000…01151921七月202341【例1】设浮点数的阶码6位(含符号位),尾数为10位(含符号位),阶码采用补码表示,尾数采用原码表示,分析其浮点数表示范围。最小负数:阶码正最大,尾数负最小最小负数为-0.1…1×201…1即-(1-2-9)×2(25-1)=-(1-2-9)×231该浮点数即为规格化数形式;01…111…11m1n21七月202342【例1】设浮点数的阶码6位(含符号位),尾数为10位(含符号位),阶码采用补码表示,尾数采用原码表示,分析其浮点数表示范围。最大负数:阶码负最小、尾数负最大非规格化数形式最大负数为-0.0…01×210…0即-2-9×2-(25)=-2-9×2-32规格化数形式最大负数为-0.1×210…0即-2-1×2-(25)=-2-1×2-3210…011…001m1n10…010…011m1n21七月202343浮点数的最值非规格化数据规格化数据真值机器数机器数真值最小负数最大负数最小正数最大正数设浮点数格式为1位阶符m位阶码1位数符n位尾数补码表示[-2m,+(2m-1)]原码表示[-(1-2-n)],+(1-2-n)]-(1-2-n)×2+(2m-1)-2-n×2-2m+2-n×2-2m+(1-2-n)×2+(2m-1)01···11;111···1110···00;100···0110···00;000···0101···11;011···11同左同左10···00;110···00-2-1×2-2m+2-1×2-2m同左同左10···00;010···0021七月202344【例2】设浮点数的阶码6位(含符号位),尾数为10位(含符号位),阶码和尾数均采用补码表示,分析其规格化浮点数表示范围。最大正数阶码最大、尾数最大最大正数为0.11…1×211…1(1-2-9)×231最小正数最小正数为0.10…00×2-32

即2-32×2-1=2-33注意:不是

因为0.0…1×2-32不是规格化数。01…101…1151910…0010…00151910…000…01151921七月202345【例2】设浮点数的阶码6位(含符号位),尾数为10位(含符号位),阶码和尾数均采用补码表示,分析其规格化浮点数表示范围。最小的负数最小负数为-1.00…0×231即231×(-1)=-231最大的负数最大负数为-0.10…01×2-32

即-(2-9+2-1)×2-32注意:因有规格化要求,不是01…110…0151910…0101…1151910…0111…1151921七月202346浮点数的最值非规格化数据规格化数据真值机器数机器数真值最小负数最大负数最小正数最大正数设浮点数格式为1位阶符m位阶码1位数符n位尾数移码表示[-2m,+(2m-1)]补码表示[-1,+(1-2-n)]-1×2+(2m-1)-2-n×2-2m+2-n×2-2m+(1-2-n)×2+(2m-1)11···11;100···0000···00;111···1100···00;000···0111···11;011···11同左同左00···00;1

01···11-(2-1+2-n)×2-2m+2-1×2-2m同左同左00···00;010···0021七月2023472009考研真题12.一个C语言程序在一台32位机器上运行。程序中定义了三个变量x,y和z,其中x和z是int型,y为short型。当x=127,y=-9时,执行赋值语句z=x+y后,x、y和z的值分别是:

x=0000007FH,y=FFF9H,z=00000076Hx=0000007FH,y=FFF9H,z=FFFF0076Hx=0000007FH,y=FFF7H,z=FFFF0076Hx=0000007FH,y=FFF7H,z=00000076H√21七月2023482.1.1数据格式——十进制数串的表示方法字符串形式每个十进制数位占用一个字节;除保存各数位,还需要指明该数存放的起始地址和总位数;主要用于非数值计算的应用领域。压缩的十进制数串形式采用BCD码表示,一个字节可存放两个十进制数位;节省存储空间,便于直接完成十进制数的算术运算;用特殊的二进制编码表示数据正负,如1100—正、1101—负21七月2023492.1.3字符与字符串的表示方法ASCII码(美国国家信息交换标准字符码)包括128个字符,共需7位编码;ASCII码规定:最高位为0,余下7位作为128个字符的编码。最高位的作用:奇偶校验;扩展编码。字符串指连续的一串字符,每个字节存一个字符。当存储字长为2、或4个字节时,在同一个存储单元中;可按从低位字节向高位字节的顺序存放字符串的内容;或按从高位字节向低位字节的次序顺序存放字符串的内容。21七月2023502.1.4汉字的表示方法汉字的输入编码目的:直接使用西文标准键盘把汉字输入到计算机。分类:主要有数字编码、拼音码、字形编码三类。汉字内码用于汉字信息的存储、交换、检索等操作的机内代码汉字字模码用点阵表示的汉字字形代码,用于汉字的输出。21七月202351显示输出打印输出机内码向字形码转换机内码输入码向机内码转换中文编码字符代码化(输入)数字码拼音码字形码21七月202352汉字字模码精密型4848288提高型3232128普及型242472简易型161632汉字点阵类型点阵占用字节数21七月2023532.1.5校验码(数据校验)数据校验原因为减少和避免数据在计算机系统运行或传送过程中发生错误,在数据的编码上提供了检错和纠错的支持。数据校验码的定义能够发现某些错误或具有自动纠错能力的数据编码;也称检错码;数据校验的基本原理是扩大码距;码距:任意两个合法码之间不同的二进制位的最少位数;仅有一位不同时,称其码距为1。21七月202354码距及作用设用四位二进制表示16种状态16种编码都用到了,此时码距为1;任何一种状态的四位码中的一位或几位出错,就变成另一个合法码;无查错能力。若用四位二进制表示8个状态只用其中的8种编码,而把另8种编码作为非法编码;可使码距扩大为2;

21七月202355校验码的类型奇偶校验码判断数据中1的个数设置1位校验位;分奇校验和偶校验两种,只能检错,无纠错能力;海明校验码(有兴趣自学)在奇偶校验的基础上增加校验位而得;具有检错和纠错的能力;循环冗余校验码(CRC)(有兴趣自学)通过模2的除法运算建立数据信息和校验位之间的约定关系;具有很强的检错纠错能力。21七月202356奇偶校验码——概念奇偶校验原理在数据中增加1个冗余位,使码距由1增加到2;如果合法编码中有奇数个位发生了错误,就将成为非法代码。增加的冗余位称为奇偶校验位。校验的类型偶校验:每个码字(包括校验位)中1的数目为偶数。奇校验:每个码字(包括校验位)中1的数目为奇数。校验过程发送端:按照校验类型,在发送数据后添加校验位P;接收端:对接收到的数据(包括校验位)进行同样类型的校验,决定数据传输中是否存在错误;21七月202357奇偶校验码——校验原理偶校验:在接收端求校验位P’=D7⊕D6⊕D5⊕D4⊕D3⊕D2⊕D1⊕D0⊕P若P’=0,则无错;若P’=1,则有错。奇校验:在接收端求校验位P’=D7⊕D6⊕D5⊕D4⊕D3⊕D2⊕D1⊕D0⊕P若P’=1,则无错;若P’=0,则有错。电路实现:一般采用异或电路得到校验位。10101011求校验码偶校验码

10101011

1奇校验码

10101011

021七月202358接收端字校验位校验码例1:数据

00100001奇校验码001000011偶校验码001000010例2:数据:01110101偶校验码011101011发送端(门电路)011001011出错!奇偶校验码

——例题(1/2)21七月202359例3:数据:01110101奇校验码011101010发送端(门电路)011001110接收端正确奇偶校验只能发现奇数个错误,且不能纠正错误!奇偶校验码——例题(1/2)21七月202360海明码(PPT58—PPT67自学)海明码是1950年提出的;只要增加少数的几位校验码,即可检测出多位出错,并能自动恢复一或几位出错信息;实现原理:在一个数据中加入几个校验位,每个校验位和某几个特定的信息位构成偶校验的关系;接收端对每个偶关系进行校验,产生校验因子;通过校正因子区分无错和码字中的n个不同位置的错误;不同代码位上的错误会得出不同的校验结果;21七月202361海明码——确定校验位的位数设K为有效信息的位数,r为校验位的位数,则整个码字的位数N应满足不等式:N=K+r≦2r-1通常称为(N,K)海明码设某(7,4)海明码表示的码字长度为

位,校验位数为

位。例如:数据D3D2D1D0=1001K=4,r+5≦2r

;可知,需要校验位3位P3P2P1;7321七月202362海明码——确定校验位的位置数据表示数据位D(DiDi-1…D1D0)、校验位P(PjPj-1…P2P1)海明码H(包括数据位和校验位):HmHm-1…H2H1;分组原则每个校验位Pi从低到高被分在海明码中位号2i-1的位置;例如:数据D3D2D1D0=1001,校验位P3P2P1海明码共7位H7H6…H2H1,各位分配如下:H7H6H5H4H3H2H1P1P2P3D0D1D2D321七月202363海明码——校验分组校验原则海明码的每一位Hi有多个校验位校验,其关系是被校验的每一位位号等于校验它的各校验位的位号之和;每个信息位的位置写成用2的幂次之和的形式;例如H7参与H1、H2、H4的校验;H6参与H2、H4的校验;H5参与H1、H4的校验;H3参与H1、H2的校验;分组情况H7H6H5H4H3H2H1P1P2P3D0D1D2D3第一组P1第二组P2第三组P3√√√√√√√√√第一组(P1、D3、D1、D0)第二组(P2、D3、D2、D0

)第三组(P3、D3、D2、D1

)21七月202364海明码——校验位的形成校验位形成公式P1=第一组中所有位(除P1)求异或

……

Pj=第j组中所有位(除Pj)求异或为了能检测两个错误,增加一位校验Pj+1,放在最高位。Pj+1=所有位(包括P1,P2

,…

,Pj)求异或例如:P1=D3⊕D1⊕D0=1⊕0⊕1=0P2=D3⊕D2⊕D0=1⊕0⊕1=0P3=D3⊕D2⊕D1=1⊕0⊕0=1P4=D3⊕D2⊕D1⊕D0⊕P3⊕P2⊕P1=1⊕0⊕0⊕1⊕0⊕0⊕1=1第一组(P1、D3、D1、D0)第二组(P2、D3、D2、D0

)第三组(P3、D3、D2、D1

)但不能纠错!21七月202365海明码——接收端校验(1/2)接收端接收到数据后,分别求S1,S2,S3,…,Sj

S1=第一组中所有位(包括P1)求异或

Sj=第j组中所有位(包括Pj)求异或Sj+1=Pj+1⊕所有位(包括P1,P2

,…

,Pj)求异或当Sj+1=1时,有一位出错;由Sj…

S3S2S1的编码指出出错位号,将其取反,即可纠错。当Sj+1=0时,无错或有偶数个错(两个错的可能性比较大);当Sj…

S3S2S1=0

0

00时,接收的数无错,否则有两个错。21七月202366同上例,接收端接收的数据为接收端求SS1=0⊕1⊕0⊕1=0S2=0⊕1⊕0⊕1=0S3=1⊕1⊕0⊕0=0S4=1⊕1⊕0⊕0⊕1⊕1⊕0⊕0=0若接收端接收到错误的数据S1=0⊕1⊕0⊕1=0S2=0⊕1⊕1⊕1=1S3=1⊕1⊕1⊕0=1S4=1⊕1⊕1⊕0⊕1⊕1⊕0⊕0=1海明码——接收端校验(2/2)H8H7H6H5H4H3H2H1P4D3D2D1P3D0P2P111001100第一组(P1、D3、D1、D0)第二组(P2、D3、D2、D0

)第三组(P3、D3、D2、D1

)无错误!1S4=1,有错误!S3S2S1=110,H6位有错,应取反!21七月202367【练习】设待校验的数据为

D7~D0=10101011,写出其海明校验码。【解】①确定海明校验位的位数因为K=8,由N=K+r≦2r-1,得9+r≦2r,校验位的位数为r=4。②确定校验位的位置

i:121110987654321D7D6D5D4P4D3D2D1P3D0P2P1③分组(N位分r组)位号i121110987654321D7D6D5D4P4D3D2D1P3D0P2P110101011第一组(P1)√√√√√第二组(P2)√√√√√第三组(P3)√√√√第四组(P4)√√√√21七月202368【练习】设待校验的数据为

D7~D0=10101011,写出其海明校验码。④校验位的形成

P1=D6⊕D4⊕D3⊕D1⊕D0=1;

P2=D6⊕D5⊕D3⊕D2⊕D0=1P3=D7⊕D3⊕D2⊕D1=1;

P4=D7⊕D6⊕D5⊕D4=0

所以,信息码10101011的海明校验码为:10100101111121七月202369海明码的纠错与检错能力一个系统能纠正一位差错时,码距最小是3;码距为3时,或能纠正一位错,或能检测二位错;但不能同时纠正一位错并检测二位错。码距为1至7时,海明码的纠错和检错能力如右表:码距越大,纠错能力越强,但数据冗余也越大,即编码效率低了。码距码能力检错纠错10021032或142并152并263并273并321七月202370CRC校验(自学)CRC的工作方法在发送端产生一个循环冗余码,附加在信息位后面一起发送到接收端;接收端收到的信息按发送端形成循环冗余码同样的算法进行校验;若无错,则接收;若有错,需重发。CRC的特点可检测出所有奇数位错;可检测出所有双比特的错;可检测出所有小于、等于校验位长度的突发错。CRC码的信息字段和校验字段的长度可以任意选定。21七月2023712.2定点加法、减法运算2.2.1补码加法2.2.2补码减法2.2.3溢出概念与检验方法2.2.4基本的二进制加法、减法器21七月2023722.2.1补码加法补码加法运算基本公式定点整数:[x+y]补=[x]补

+[y]补

(mod2n+1)

定点小数:[x+y]补=[x]补

+[y]补

(mod2)

证明(1)证明依据:补码的定义(以定点小数为例)(2)证明思路:分三种情况。

(a)x、y均为正值(x﹥0,y﹥0)

(b)x、y均为负值(x<0,y<0)

(c)x、y一正一负(x﹥0,y﹤0或者x<0,y>0)21七月202373补码加法公式证明(1/2)证明:(a)x﹥0,y﹥0[x]补+[y]补=x+y=[x+y]补

(mod2)(b)x<0,y<0

∵[x]补=2+x,[y]补=2+y

∴[x]补+[y]补=2+x+2+y=2+(2+x+y)=2+[x+y]补(mod2)=[x+y]补

21七月202374补码加法公式证明(2/2)(c)x﹥0,y﹤0(x<0,y>0的证明与此相同)

∵[x]补=x,[y]补=2+y

∴[x]补+[y]补=x+2+y=2+(x+y)

当x+y>0时,2+(x+y)>2,进位2必丢失;因(x+y)>0,故[x]补+[y]补=x+y=[x+y]补

(mod2)

当x+y<0时,2+(x+y)<2因(x+y)<0,故[x]补+[y]补=2+(x+y)=[x+y]补

(mod2)21七月202375定点数补码加法举例[例11]x=+1001,y=+0101,求x+y。解:

[x]补=01001,[y]补=00101[x]补

01001

+[y]补

00101[x+y]补

01110

所以x+y=+1110[例12]x=+1011,y=-0101,

求x+y。解:[x]补=01011,[y]补=11011[x]补

01011+[y]补

11011[x+y]补

100110

所以x+y=+011021七月2023762.2.2补码减法

补码减法运算基本公式定点整数:[x-y]补=[x]补

-[y]补=[x]补

+[-y]补

(mod2n+1)定点小数:[x-y]补=[x]补

-[y]补=[x]补

+[-y]补

(mod2)证明:只需要证明[-y]补=-[y]补

已证明[x+y]补=[x]补

+[y]补,故[y]补=[x+y]补-[x]补

又[x-y]补=[x]补

+[-y]补,故[-y]补=[x-y]补-[x]补

可得[y]补

+[-y]补=[x+y]补+[x-y]补-[x]补-[x]补

=[x+y+x-y]补-[x]补-[x]补

=[x+x]补-[x]补-[x]补=0[-y]补等于[y]补的各位取反,末位加1。21七月202377定点数补码减法举例

[例13]已知x1=-1110,x2=+1101,

求:[x1]补,[-x1]补,[x2]补,[-x2]补。解:[x1]补=10010[-x1]补=﹁[x1]补+1

=01101+00001=01110[x2]补=01101[-x2]补=﹁[x2]补+1

=10010+00001=10011注意课本上的错误!注意课本上的错误!21七月202378定点数补码减法举例

[例14]x=+1101,y=+0110,求x-y。解:[x]补=01101,[y]补=00110,[-y]补=11010[x-y]补=[x]补+[-y]补=01101+11010

=100111

=00111

∴x-y=+011101101+)1101010011121七月20237921七月202379定点数补码加减法运算基本公式定点整数:

[x±

y]补=[x]补

+[±y]补

(mod2n+1)定点小数:

[x±

y]补=[x]补

+[±y]补

(mod2)定点数补码加减法运算符号位和数值位可同等处理;只要结果不溢出,将结果按2n+1或2取模,即为本次运算结果。21七月202380例

设机器字长为8位,[x]补=10100011,

[y]补=00101101,求x-y。解: [-y]补=11010011 [x-y]补=[x]补+[-y]补 =10100011+11010011

=101110110

=01110110

∴x-y=+11810100011+)11010011101110110×x=-93,y=+45计算过程中,产生了溢出!-93-45=-138<-12821七月2023812.2.3溢出概念与检测方法溢出在定点数机器中,数的大小超出了定点数能表示的范围。上溢数据大于机器所能表示的最大正数;下溢数据小于机器所能表示的最小负数;例如,4位补码表示的定点整数,范围为[-8,+7]若x=5,y=4,则x+y产生上溢若x=-5,y=-4,则x+y产生下溢若x=5,y=-4,则x-y产生上溢21七月20238121七月202382例题[例15]x=+1011,y=+1001,求x+y。[解:]

[x]补=0.1011[y]补=0.1001[x]补

0.1011

+[y]补

0.1001[x+y]补

1.0100[例16]x=-1101,y=-1111,求x+y。[解:]

[x]补=1.0011[y]补=1.0001[x]补

1.0011+[y]补

1.0001[x+y]补

0.0101正数+正数=负数负数+负数=正数溢出!21七月202383溢出判别方法——直接判别法方法:同号补码相加,结果符号位与加数相反;异号补码相减,结果符号位与减数相同;特点:硬件实现较复杂;举例:若[x]补=0101,[y]补=0100,则[x+y]补=1001若[x]补=1011,[y]补=1100,则[x+y]补=0111若[x]补=0101,[y]补=1100,则[x-y]补=1001上溢下溢上溢21七月202384溢出判别方法——变形补码判别法变形补码,也叫模4补码:采用双符号位表示补码判别方法:特点:硬件实现简单,只需对结果符号位进行异或举例:若[x]补=00101,[y]补=00100,则[x+y]补=01001若[x]补=11011,[y]补=11100,则[x+y]补=10111若[x]补=00101,[y]补=11100,则[x-y]补=01001双符号位

结果00正01上溢10下溢11负上溢下溢上溢21七月20238521七月202385溢出判别方法——进位判别法0101+)

01001001100001+)

0100010100V=0⊕1=1V=0⊕0=0判别方法:最高数值位的进位与符号位的进位是否相同;判别公式溢出标志V=Cf⊕Cn-1其中Cf为符号位产生的进位,Cn-1为最高数值位产生的进位。举例:21七月202386回顾逻辑门图形符号21七月2023872.2.4基本的二进制加法/减法器一位二进制数据的半加器:加数:Ai、Bi

结果:Si(和)Ci+1(本位向高位的进位)一位半加器示意图:一位二进制数据的全加器:加数:Ai、Bi

Ci(低位向本位的进位)结果:Si(和)

Ci+1(本位向高位的进位)一位全加器示意图:FAAiBiCiCi+1SiHAAiBiCi+1Si21七月202388一位二进制数据的全加器的逻辑结构全加运算的真值表如右所示:两个输出端的逻辑表达式Si=Ai⊕Bi⊕CiCi+1=AiBi+BiCi+CiAi全加器逻辑结构:输入输出AiBiCiSiCi+100000001100101001101100101010111001111113T+1T+1T3T+3T21七月202389多位二进制数据加法器两个n位的数据A=An-1An-2…A1A0,B=Bn-1Bn-2…B1B0和S=Sn-1Sn-2…S1S0采用进位判别法判断运算的溢出:V=Cn⊕Cn-121七月202390多位二进制数据加法/减法器将减法转换成加法[A]补

-[B]补=[A]补

+[-B]补由[B]补求[-B]补

[B]补求各位取反,末位加1;将加减法电路合二为一使用异或运算;当M=0时,Bi’=Bi当M=1时,Bi’=﹁Bi;BiMBi’21七月202391多位二进制数据加法/减法器3T+5T=1*2T+6T(1*2T+6T)+2T=2*2T+6T(n-1)*2T+6T(n*2T+6T)+3T=2nT+9T动画演示:2-1.swfn*2T+6T21七月202392多位二进制加法/减法器的输出延迟假如每位均采用一位全加器并考虑溢出检测,n位行波进位加法器的延迟时间ta为:

ta=n*2T+9T=(2n+9)T如果不考虑溢出,则延迟时间ta由Sn-1的输出延迟决定:

ta=(n-1)*2T+6T+3T

=(2(n-1)+9)T

延迟时间ta输入稳定后,在最坏情况下加法器得到稳定的输出所需的最长时间。显然这个时间越小越好。21七月2023932.3定点乘法运算2.3.1原码并行乘法2.3.2直接补码并行乘法(略)2.3.1原码并行乘法1.人工算法与机器算法的同异性

在定点计算机中,两个原码表示的数相乘的运算规则是:乘积的符号位由两数的符号位按异或运算得到,而乘积的数值部分则是两个正数相乘之积。设n位被乘数和乘数用定点小数表示(定点整数也同样适用)被乘数[x]原=xf.xn-1…x1x0乘数[y]原=yf.yn-1…y1y0

则乘积

[z]原=(xf⊕yf)+(0.xn-1…x1x0)(0.yn-1…y1y0)

式中,xf为被乘数符号,yf为乘数符号。2.3.1原码并行乘法人们习惯的算法对机器并不完全适用。

原因:

(1)机器通常只有n位长,两个n位数相乘,乘积可能为2n位。(2)只有两个操作数相加的加法器,难以胜任将n个位积一次相加起来的运算。因此,早起计算机中,常采用串行的1位乘法,即通过多次“加法-移位”操作来实现。这种方式不需要很多部件,但是串行方法太慢,不能满足科学计算机的要求。21七月2023962.常用的串行乘法运算原码乘法(符号位和数值位必须分开计算)原码一位乘一次判断1位,需判断n次(乘数位数为n);原码两位乘一次判断2位,可提高乘法的运算速度;补码乘法(符号位和数值位可以等同处理)补码一位乘Booth算法——比较法,符号位直接参与运算补码两位乘注意:此串行乘法运算属考研大纲要求,可根据情况自行掌握。21七月202397(1)原码一位乘法设X=Xf.X1X2…Xn,Y=Yf.Y1Y2…Yn,乘积的符号位为Pf,则Pf=Xf⊕Yf|P|=|X|●|Y|求|P|的运算规则如下被乘数和乘数均取绝对值参加运算,符号位单独考虑;被乘数取双符号位,部分积的长度同被乘数,初值为0;从乘数的最低位Yn开始判断:若Yn=1,则部分积加上被乘数|X|,然后右移一位;若Yn=0,则部分积加上0,然后右移一位。重复,判断n次21七月202398+00.1101Yn=1加|X|00.1101

部分积乘数Yn

说明

00.00000.1011

例1.若X=0.1101,Y=-0.1011,用原码一位乘法求[XY]原。【解答】|X|=00.1101(用双符号位表示),|Y|=0.1011(用单符号位)→00.011010.101

右移一位得P1+00.1101Yn=1加|X|01.00111→00.1001110.10

右移一位得P2+00.0000Yn=0加000.100111→00.01001110.1

右移一位得P3+00.1101Yn=1加|X|01.0001111→00.100011110右移一位得P4由于Pf=Xf⊕Yf=0⊕1=1,|P|=|X|*|Y|=0.10001111,[XY]原=1.10001111(2)原码两位乘法运算规则如下:①符号位不参加运算,最后的符号Pf=Xf⊕Yf。②部分积和被乘数均采用三位符号位,乘数末位增加1位C,其初值为0。③按下表操作。④若尾数字长n为偶数(不含符号),乘数用双符号位,最后一步不移位;若尾数字长n为奇数(不含符号),乘数用单符号位,最后一步右移一位。Yn-1YnC操作000

加0,右移两位,0→C001

加|X|,右移两位,0→C010

加|X|,右移两位,0→C011

加2|X|,右移两位,0→C100

加2|X|,右移两位,0→C101

减|X|,右移两位,1→C110

减|X|,右移两位,1→C111

加0,右移两位,1→C例.X=-0.1101,Y=0.0110,用原码两位乘法求[XY]原。【解答】|X|=000.1101,2|X|=001.10

温馨提示

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

评论

0/150

提交评论