![白中英 第五版 计算机组成原理第2章_第1页](http://file4.renrendoc.com/view/6d6a5c487fd4690dadcd76a424f2b49e/6d6a5c487fd4690dadcd76a424f2b49e1.gif)
![白中英 第五版 计算机组成原理第2章_第2页](http://file4.renrendoc.com/view/6d6a5c487fd4690dadcd76a424f2b49e/6d6a5c487fd4690dadcd76a424f2b49e2.gif)
![白中英 第五版 计算机组成原理第2章_第3页](http://file4.renrendoc.com/view/6d6a5c487fd4690dadcd76a424f2b49e/6d6a5c487fd4690dadcd76a424f2b49e3.gif)
![白中英 第五版 计算机组成原理第2章_第4页](http://file4.renrendoc.com/view/6d6a5c487fd4690dadcd76a424f2b49e/6d6a5c487fd4690dadcd76a424f2b49e4.gif)
![白中英 第五版 计算机组成原理第2章_第5页](http://file4.renrendoc.com/view/6d6a5c487fd4690dadcd76a424f2b49e/6d6a5c487fd4690dadcd76a424f2b49e5.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第二章运算方法与运算器
2.1数据与文字的表示方法
2.2定点加法、减法运算
2.3定点乘法运算
2.4定点除法运算
2.5定点运算器的组成
2.6浮点运算方法和浮点运算器☆☆二进制数便于计算机存储及物理实现特点:逢二进一,由0和1两个数码组成,基数为2,各个位权以2k表示二进制数:
anan-1…a1a0.b1b2…bm=
an×2n+an-1×2n-1+…+a1×21+a0×20
+b1×2-1+b2×2-2+…+bm×2-m
其中ai,bj非0即1十六进制数用于表达二进制数,相互转换简单基数16,逢16进位,位权为16k,16个数码:0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F十六进制数:
anan-1…a1a0.b1b2…bm=
an×16n+an-1×16n-1+…+a1×161+
a0×160 +b1×16-1+b2×16-2+…+bm×16-m
其中ai,bj是0~F中的一个数码二进制数或十六进制数转换为十进制数方法:按权展开二进制数转换为十进制数
0011.1010B
=1×21+1×20+1×2-1+0×2-2+1×2-3
=3.625十六进制数转换为十进制数 1.2H
=1×160+2×16-1
=1.125十六进制数用后缀字母H二进制数用后缀字母B十进制整数转换为二或十六进制数整数部分转换:用除法十进制数整数部分不断除以基数2或16,并记下余数,直到商为0为止由最后一个余数起逆向取各个余数,则为转换成的二进制和十六进制数
126=01111110B 126=7EH十进制小数转换为二或十六进制数小数部分转换:用乘法分别乘以各自的基数,记录整数部分,直到小数部分为0为止
0.8125=0.1101B 0.8125=0.DH小数转换会发生总是无法乘到为0的情况可选取一定位数(精度)将产生无法避免的转换误差真值和机器数真值:现实中真实的数值机器数:计算机中用0和1数码组合表达的数值无符号数:只表达0和正整数的定点整数有符号数:表达负整数、0和正整数的定点整数符号位需要占用一个位,常用机器数的最高位0表示正数、1表示负数具有原码、反码、补码、移码没有符号位,使用全部字长来表示数值大小字长N=8时,编码:00000000~11111111
取值范围:0~255(28-1)字长N=16时,编码:0000~FFFFH
取值范围:0~65535(216-1)字长N=32时,编码:00000000~FFFFFFFFH
取值范围:0~232-1无符号数的表示2.1
数据与文字的表示方法2.1.1数据格式2.1.2数的机器码表示2.1.3字符与字符串的表示方法2.1.4汉字的表示方法2.1.5校验码计算机中常用的数据表示格式有两种,一是定点格式,二是浮点格式定点格式容许的数值范围有限,但要求的处理硬件比较简单浮点格式容许的数值范围很大,但要求的处理硬件比较复杂2.1.1
数据格式1、定点数的表示方法定点表示:约定机器中所有数据的小数点位置是固定不变的。通常将数据表示成纯小数或纯整数定点数x=x0x1x2…xn
在定点机中表示如下(x0表示符号位,0代表正号,1代表负号)定点整数的小数点位置定点小数的小数点位置定点数例例:X=+1010110.纯整数:X=01010110.正数,符号位取0Y=-1101001.纯整数:Y=11101001.(原码)负数,符号位取1X=+0.11011Y=-0.10101符号位取0纯小数:X=0.11011符号位取1纯小数:X=1.10101(原码)定点整数的表示范围纯整数的表示范围为(x1x2…xn各位均为0时最小;各位均为1时最大,x0为符号位)
0≤|x|≤2n
-1例如:n=8,最大值编码:11111111
表示:11111111=100000000-1
=28-1目前计算机中多采用定点纯整数表示,因此将定点数表示的运算简称为整数运算定点小数的表示范围纯小数的表示范围为(x1x2…xn各位均为0时最小;各位均为1时最大,x0为符号位)
0≤|x|≤1-2-n例如,n=8,最大值编码:0.11111111
表示:0.11111111=1.0-0.00000001
=1-2-82、浮点数的表示方法电子质量(克):9×10-28=0.9×10-27
太阳质量(克):2×1033=0.2×1034
采用定点很难表示,而且不容易计算??数的小数点位置随比例因子的不同而在一定范围内自由浮动
一个十进制数N可以写成
N=10e×M一个R进制数N可以写成
N=Re×MM
尾数e
指数R 基数数的科学表达法阶码和尾数用定点小数表示,给出有效数字,决定了浮点数的表示精度表达指数部分用整数形式表示,指明小数点在数据中的位置决定浮点数的表示范围早期计算机表达法浮点数的机器表示方法32位单精度浮点数E:含阶符的阶码,8位阶码采用移码方式(方便比较和对阶)来表示正负指数,采用这种方式时,将浮点数的指数真值e变成阶码E时,应将指数e加上一个固定的偏移值127(01111111),即E=e+127。
S:1位符号位0表示正数1表示负数M:尾数,23位小数表示,小数点放在尾数域最前面IEEE754标准64位双精度浮点数S:1位符号位M:尾数,52位小数IEEE754标准E:含阶符的阶码,11位阶码采用移码方式(方便比较和对阶)来表示正负指数,采用这种方式时,将浮点数的指数真值e变成阶码E时,应将指数e加上一个固定的偏移值1023(01111111111),即E=e+1023。
浮点数的规格化例:156.78 =15.678×101 =
1.5678×102 =0.15678×103=RE×M对于二进制数1011.1101 =0.10111101×2+4 =10.111101×2+2 =1.0111101×2+3(规格化表示法)
=1.0111101×2+11(规格化表示法)
=RE×M那么,计算机中究竟采用哪种数据形式?多种数据形式二进制数IEEE754标准小数点左边这个1在机器里可以省略(少存一位)尾数最高有效位为1,隐藏,并且隐藏在小数点的左边(即:1≤M<2)32位单精度浮点数规格化表示 x=(-1)s×(1.M)×2E-127 e=E-127(E=e+127)64位双精度浮点数规格化表示 x=(-1)s×(1.M)×2E-1023 e=E-1023(E=e+1023)指数真值e用移码形式表示为阶码E尾数规格化表示原则IEEE754标准④X=(-1)s×1.M×2e
=+(1.011011)×23 =+1011.011=(11.375)10②指数e=阶码-127=10000010-01111111
=00000011=(3)10③包括隐藏位1的尾数1.M=1.011011例1:浮点机器数(41360000)16,求真值①十六进制数展开成二进制数010000010011011000000000
0000
0000S阶码E(8位)尾数M(23位)例2:真值20.59375,求32位单精度浮点数①分别将整数和分数部分转换成二进制数
20.59375=10100.10011②移动小数点,使其在第1、2位之间10100.10011=1.010010011×24e=4S=0E=4+127=131=10000011M=010010011③得到32位浮点数的二进制存储格式为:0
100000110100100110000000000
0000=(41A4C000)16二进制:010000011010000110000000,,,S=0e=10000011-01111111=100=4M=1.01000011真值=+(1.01000011)×24
=+10100.0011=20.187510练习题:若浮点机器为(41A18000)16,求真值?3、十进制数据表示人们习惯于用十进制表示数据,而计算机则采用二进制表示和处理数据。所以向计算机输入数据时,需要进行十进制数到二进制数的转换;输出数据时,则要进行二进制数到十进制数的转换处理。在数据量较小的情况下,这样的转换对机器运行效率的影响不是很大。但是,在某些应用领域,运算简单而数据量很大,进行这些转换所占用的时间比例比较大。所以为了提高机器的运行效率,计算机可以用十进制来表示和处理数据。一个十进制数位是用若干位二进制编码表示。用四位二进制代码的不同组合来表示一个十进制数码的编码方法,称为二—十进制编码,也称BCD码(BinaryCodedDecimal)。常用这种编码作为十进制数转换成二进制数的中间过渡。即先将一个十进制数用BCD码来表示,再把它们送入机器。BCD码(BinaryCodedDecimal)二进制编码的十进制数一个十进制数位用4位二进制编码来表示常用8421BCD码:低10个4位二进制编码表示0~9BCD码很直观BCD码:0100100101111000.000101001001十进制真值: 4978.149BCD码便于输入输出,表达数值准确
十进制数串的表示方法1.字符串形式每个十进制的数位或符号位都用一个字节存放+12-38-382.压缩的十进制数串形式一个字节存放两个十进制的数位,符号位占半个字节,数位加符号位之和必须为偶数(例如用C表示正,D表示负)+12123
C012D+123-12
每个数位可用BCD码1.原码表示法定点整数的原码形式为x0x1x2…xn
X
2n
>X≥0
[X]原=
2n-X=2n+|X|
0≥X>-2n使用8位二进制:[105]10=[01101001]2X=+105,则[X]原=01101001X=-105,则[X]原=111010010使用原码有两种表达形式
[+0]原
=00000000
[-0]原
=10000000符号位2.1.2数的机器码表示具有原码、反码、补码、移码原码缺点进行加减运算十分麻烦比较数的绝对值的大小大数减小数符号跟大数2/6/20235:13AM
现在是北京时间3点整,而时钟却指向5点。5-2=35+10=15=3(12自动丢失。12就是模)2、补码表示法2/6/20235:13AM继续推导:
5-2=5+10(MOD12)
-2=10(MOD12)结论:可以说:在模为12的情况下,-2的补码就是10。一个负数用其补码代替,可以把减法转换为加法来实现。2.补码表示法定点整数的补码形式为x0x1x2…xn
X
2n
>X≥0
[X]补=
2n+1+X=2n+1-|X|
0≥x≥-2n定点整数的补码方法有符号整数在计算机中默认采用补码最高位表示符号:正数用0,负数用1正数补码:直接表示数值大小(=原码=无符号数)负数补码:符号位不变,将对应数值取反加1 [105]补码=+1101001=01101001 [-105]补码=-[1101001]取反+1
=-0010110+1=-0010111=10010111为什么是补码证明:[-105]补=2n+1+X=28+(-1101001)=100000000+(-1101001)=100101113、定点整数的反码反码:二进制的各位数码0变为1,1变为0有符号整数采用反码最高位表示符号:正数用0,负数用1正数反码:直接表示数值大小(=原码=补码)负数反码:将对应正数反码取反
[105]反码=01101001 [-105]反码=[1101001]取反=100101104、定点整数的移码(偏移码)移码通常用于表示浮点数的阶码有符号整数采用移码最高位表示符号:正数用1,负数用0(跟其他码相反)移码的传统定义:
[X]移码=2n+X
2n
>X≥-2n [105]移码=10000000+1101001=1,1101001 [-105]移码=10000000-1101001=0,0010111相对于偏移一半传统定义与标准浮点数阶码的定义不同真值原码反码补码移码-128
1000000000000000-12711111111100000001000000100000001...............-110000001111111101111111101111111-010000000111111110000000010000000+000000000000000000000000010000000+100000001000000010000000110000001...............+12701111111011111110111111111111111例8
设机器字长16位,定点表示,尾数15位,数符1位,问:
⑴
定点原码整数表示时,最大正数是多少?最小负数是多少?
⑵
定点原码小数表示时,最大正数是多少?最小负数是多少?例8之解⑴定点原码整数表示最大正数值=(215-1)10=(+32767)10
最小负数值=-(215-1)10
=(-32767)10
⑵定点原码小数表示最大正数值=(+0.111...11)2
=(1-2-15)10最小负数值=(-0.111..11)2=-(1-2-15)100
11111111111
1111
1
11111111111
1111
例9假设由S,E,M三个域组成的一个32位二进制字所表示的非零规格化浮点数x,真值表示为(非IEEE754标准):
x=(-1)s×(1.M)×2E-128
问:它所表示的规格化的最大正数、最小正数、最大负数、最小负数是多少?(1)最大正数01111111111111111111
1111
1111
1111x=[1+(1-2-23)]×2127(2)最小正数000000000000000000
000
000
000
00000x=1.0×2-128(3)最小负数111111111111111111
111
111
111
11111x=-[1+(1-2-23)]×2127(4)最大负数
100000000000000000
000
000
000
00000x=-1.0×2-128
同一代码的不同含义一个代码,采用不同编码,其数值不一样计算机内一个二进制数: 10000001不同的含义无符号二进制数: 1298421BCD码: 81有符号整数的原码: -1有符号整数的反码: -126有符号整数的补码: -127数的机器码表示小结正数的原码、反码、补码等于真值,只有负数才分别有不同的表示方法采用补码,减法运算可以用加法运算实现,节省硬件,目前机器中广泛采用补码表示法有些机器用原码进行存储和传送,运算时改用补码有些机器做加减法时用补码,做乘除法时用原码移码表示法主要用于表示浮点数的阶码,可以直接比较大小。表示范围和补码相同,只有最高位相反ASCII码(美国标准信息交换码)标准ASCII码用8位二进制编码,最高位为偶校验位,其余7位构成128个编码可显示和打印的字符:20H后的94个编码数码0~9:30H~39H大写字母A~Z:41H~5AH小写字母a~z:61H~7AH空格:20H2.1.3字符和字符串(非数值)的表示方法表2.1ASCII字符编码表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_oDEL0-3位4-6位字符串的表示方法字符串是指连续的一串字符,通常占用主存中连续的多个字节,每个字节存一个字符
IFA>BTHENREAD(C)字符串的存放方法1.汉字的输入编码数字编码国标区位码,用数字串代表一个汉字输入
拼音码以汉字拼音为基础的输入方法字形编码用汉字的形状(笔划)来进行的编码例如五笔字形2.1.4汉字的表示方法
2、汉字内码汉字内码是用于汉字信息的存储、检索等操作的机内代码,一般采用两个字节表示汉字内码有多种方案,常以国标码为基础进行编码例如,将国标码两字节的最高位置1后形成汉字“啊”的CCDOS系统汉字内码
3021H(0011000000100001)对应的汉字内码
B0A1H(1011000010100001)字模码汉字的字模码为:16位×16位=32字节汉字字模点阵及编码3、汉字字模码-用于对汉字进行显示输出汉字的表示方法汉字的输入编码、汉字内码、字模码是计算机中用于输入、内部处理、交换、输出四种不同用途的编码,不要混为一谈
显示输出打印输出机内码向字形码转换机内码输入码向机内码转换字符代码化(输入)2.1.5校验码校验码:能够发现甚至纠正信息传输或存储过程中出现错误的编码检错码:仅能检测出错误的编码纠错码:能够发现并纠正错误的编码最简单且应用广泛的检错码:奇偶校验码奇校验:使包括校验位在内的数据中为“1”的个数恒为奇数偶校验:使包括校验位在内的数据中为“1”的个数恒为偶数(包括0)只能检测出奇数个位出错的情况,不能纠错例7:用奇校验和偶校验进行编码数据1010101001010100000000000111111111111111偶校验码101010100010101001000000000011111111111111110奇校验码1010101010101010000000000010111111101111111112.2运算方法和运算器2.2定点加法、减法运算2.3定点乘法运算2.4定点除法运算2.5定点运算器的组成2.6浮点运算方法和浮点运算器2.2.1补码加法补码加法公式
[x]补+[y]补=[x+y]补
(mod2n+1)
在模2n+1意义下,任意两数的补码之和等于该两数之和的补码。补码加法特点符号位要作为数的一部分一起参加运算要在模2n+1的意义下相加,即超过2n+1的进位要丢掉[x]补+[y]补=[x+y]补证明假设采用定点整数表示现分四种情况来证明(1)x﹥0,y﹥0,则x+y﹥0[x]补=x,[y]补=y,[x+y]补=x+y所以等式成立.(2)x﹥0,y﹤0,则x+y>0或x+y<0[x]补=x,[y]补=2n+1+y,[x]补+[y]补=x+y+2n+1
当x+y>0时,2n+1
+(x+y)>2n+1,进位2n+1必丢失,又因(x+y)>0,故[x]补+[y]补=x+y=[x+y]补
当x+y<0时,2n+1
+(x+y)<2n+1,又因(x+y)<0,故[x]补+[y]补=2n+1
+(x+y)=[x+y]补
所以上式成立[x]补+[y]补=[x+y]补证明(3)x<0,y>0,则x+y>0或x+y<0
这种情况和第2种情况一样,把x和y的位置对调即得证。(4)x<0,y<0,则x+y<0相加两数都是负数,则其和也一定是负数。∵[x]补=2n+1
+x,
[y]补=2n+1
+y∴[x]补+[y]补=2n+1+x+2n+1+y=2n+1+(2n+1
+x+y)上式右边分为”2n+1”和(2n+1+x+y)两部分.既然(x+y)是负数,那么(2n+1
+x+y)进位”2n+1”必丢失.又因(x+y)<0,所以[x]补+[y]补=2n+1
+(x+y)=[x+y]补
例11:x=+1001,y=+0101,求x+y[x]
补=01001,[y]
补=00101
[x]
补
01001+[y]
补
00101
[x+y]
补
01110
所以x+y=01110
例9:x=+1011,y=-0101,求x+y[x]
补=01011,[y]
补=11011
[x]
补
01011+[y]
补
11011
[x+y]
补
100110
所以x+y=001102.2.2补码减法补码减法运算公式[x-y]补=[x]补-[y]补=[x]补+[-y]补[x-y]补=[x]补-[y]补=[x]补+[-y]补只要证明[-y]补=-[y]补,上式即得证。现证明如下:∵[x+y]补=[x]补+[y]补
(mod2n+1)∴[y]补=[x+y]补-[x]补
(2.19a)∵[x-y]补=[x+(-y)]补=[x]补+[-y]补∴[-y]补=[x-y]补-[x]补
(2.19b)将式(2.19a)与(2.19b)相加,得
[-y]补+[y]补=[x+y]补+[x-y]补-[x]补-[x]补=[x+y+x-y]补-[x]补-[x]补=[x+x]补-[x]补-[x]补=0故[-y]补=-[y]补(mod2n+1)(2.20)
从[y]补求[-y]补的法则是:对[y]补包括符号位“求反且最末位加1”,即可得到[-y]补。写成运算表达式,则为[-y]补=﹁[y]补+2-n
其中符号﹁表示对[y]补作包括符号位在内的求反操作,2-n表示最末位的1[x1]补=10010[-x1]补=﹁[x1]补+2-4
=01101+00001=01110[x2]补=01101[-x2]补=﹁[x2]补+2-4
=10010+00001=10011
例13:已知x1=-1110,x2=+1101
求:[x1]补,[-x1]补,[x2]补,[-x2]补例14:x=+1101,y=+0110,求x-y[x]补=01101,[y]补=00110[-y]补=11010
[x]
补01101
+[-y]
补
11010
[x-y]
补
100111
所以x-y=+01112.2.3
溢出概念与检验方法两个正数相加,结果为负(即:大于机器所能表示的最大正数),称为正溢。两个负数相加,结果为正(即:小于机器所能表示的最小负数),称为负溢。运算出现溢出,结果就是错误的[例15]
x=+1011,y=+1001,求x+y。[解:]
[x]补=01011,[y]补=01001[x]补
01011+[y]补
01001[x+y]补
10100
两正数相加,结果为负,显然错误。--运算中出现了“正溢”[例16]x=-1101,y=-1011,求x+y
。
解:[x]补=10011,[y]补=10101
[x]补
10011
+[x]补
10101
——————————————
[x+y]补
01000
两个负数相加的结果成为正数,表示负溢。2/6/20235:13AM1)两个数太大:产生进位而改变了符号位;
1、两异号数相加或两同号数相减是否会产生溢出?2、仅当两同号数相加或两异号数相减时才有可能产生溢出?问题:决不会产生溢出正确2、溢出原因:“溢出”检测方法:第一种方法:采用双符号位法,
称为“变形补码”或“模4补码”。用“00”表示正数,“11”表示负数,两个符号位同时参加运算,如果运算结果两符号位相同,则没有溢出发生。如果运算结果两符号位不同,则表明产生了溢出。“10”表示负溢出(下溢出),说明运算结果为负数,“01”表示正溢出(上溢出),说明运算结果为正数。[例17]x=+1100,y=+1000,求x+y
。
解:[x]补=001100,[y]补=001000
[x]补00
1100
+[y]补001000
————————————————
[x+y]补010100
(表示正溢)
[例18]x=-1100,y=-1000,求x+y
。
解:[x]补=110100,[y]补=111000
[x]补110100
+[y]补111000
————————————————
[x+y]补101100
(表示负溢)
第二种方法:单符号位法当最高有效位产生进位而符号位无进位时,产生上溢;当最高有效位无进位而符号位有进位时,产生下溢。故溢出逻辑表达式为V=Cf⊕C0,其中Cf为符号位产生的进位,C0为最高有效位产生的进位。(见例15、16)2.2.4基本的二进制加法/减法器在计算机中完成两个二进制数相加的基本加法器有半加器和全加器。半加器在完成两数相加时,不需要考虑低位进位。全加器用来完成两个二进制数相加,并且同时考虑低位的进位,即全加器完成三个一位数相加的功能。2.2.4基本的二进制加法/减法器全加器逻辑图CiAiBiSiCi+1FACiAiBiSiCi+1输出输入0110100001101000100010100010111010111111表2-2全加器真值表2.2.4基本的二进制加法/减法器全加器的表达式为:
Si=AiBi
Ci
Ci+1=AiBi+BiCi
+AiCi
一位全加器内部逻辑图
BCSiCi+1ABCAAiBiCi2.2.4基本的二进制加法/减法器利用全加器可以实现两数的和或差1、串行加法:从低位开始,每步只完成一位运算的加法。串行加法器只需要全加器计算两个n位数之和,需要n+1步(1位符号位),或n+2步(2位符号位)运算。高位运算只有等低位运算完成后才能进行,速度较慢2.2.4基本的二进制加法/减法器图2-2
行波进位补码加法/减法器FAFAFAFAFAS0S1Sn-1Bs1As1Bs2As2Cs2Cs1Ss2Ss1Bn-1An-1Cn-1Cn-2B1A1B0A0C1C2C0溢出M方式控制M=1减M=0加2.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)+(xn-1…x1x0)(yn-1…y1y0)两个原码表示的数相乘的运算规则是:乘积的符号位由两数的符号位按异或运算得到,而乘积的数值部分则是两个正数相乘之积。数值部分的运算方法与普通的十进制乘法类似。 设x=1101,y=1011.让我们用人工算法求其乘积,其过程如下:2/6/20235:13AM人工算法11011011×1101110100001101+10001111
2.3.1原码乘法缺点将多个数一次相加,机器难以实现。一般的加法器,只能把两个输入数相加,多个位积的同时输入是无法实现的。乘积位数增长了一倍,即2n,而机器字长只有n位所以需要改进方法一:硬件实现方法(串行的“加法和移位”),硬件结构简单,速度太慢(时间延迟太长).方法二:不带符号位的阵列乘法器2.不带符号的阵列乘法器m×n位不带符号的阵列乘法器逻辑图
每一个部分乘积项aibj叫做一个被加数。这m×n个被加数可以用m×n个“与”门并行地产生。
不带符号的全加器(FA)阵列斜线为进位输出和输入行波进位加法器n(n-1)个全加器n×n个与门play5位×5位阵列乘法器的逻辑电路图[例19]已知不带符号的二进制整数A=11011,B=10101,求每一部分乘积项aibj的值与p9p8…p0的值。解:
11011=A(2710)
×
10101=B(2110)
————————————
11011
a4b0=1,a3b0=1,a2b0=0,a1b0=1,a0b0=1
00000
a4b1=0,a3b1=0,a2b1=0,a1b1=0,a0b1=0
11011
a4b2=1,a3b2=1,a2b2=0,a1b2=1,a0b2=1
00000
a4b3=0,a3b3=0,a2b3=0,a1b3=0,a0b3=0
+11011
a4b4=1,a3b4=1,a2b4=0,a1b4=1,a0b4=1
————————————
1000110111=P
P=p9p8p7p6p5p4p3p2p1p0=1000110111(56710)
3、带符号位的阵列乘法器阵列乘法器使用的求补电路
原理:采用按位扫描技术,则从数最右端往左边扫描,直到第一个1的时候,该位和右边各位保持不变,左边各数值位按位取反。
3.带符号的阵列乘法器
(1)对2求补器电路
进行求补的方法就是从数的最右端a0开始,由右向左,直到找出第一个“1”,其以左的每一个输入位都求反。
E为“1”→对a求补
E为“0”→输出=输入
符号位可作控制信号E数值位play101001101
3.带符号的阵列乘法器
当乘积为负时,将运算结果变成带符号数(补码)符号位用做使能控制信号符号位异或的结果,用做使能控制*既适用于原码乘法—
输入为原码,算前和算后求补不做任何动作。*也适用于补码乘法—输入为补码,算前转换为原码和算后求补。*符号单独处理。*
A·B=P=p2n-1…p1p0
p2n=an⊕bn解:[x]原=01111,[y]原=11101,|x|=1111,|y|=1101
符号位运算:0⊕1=1
1111
×
1101
————————————
1111
0000
1111
+1111
————————————
11000011
乘积符号为1,算后求补器输出11000011,[x×y]原=111000011
换算成二进制数真值是x·y=(-11000011)2=(-195)10
[例20]设x=+15,y=-13,用带求补器的原码阵列乘法器求出乘积x·y=?乘积符号位单独运算:x0⊕y0=1⊕1=0算后求补器输出为11000011,最后补码乘积值为[x·y]补=011000011=+195[例21]设x=-15,y=-13,用带求补器的补码阵列乘法器求出乘积x·y=?〔解〕输入数据用补码表示:
[x]补=10001,[y]补=10011
尾数部分算前求补器输出为|x|=1111,|y|=1101。1111×11011111000011111111110000112.4定点除法运算2.4.1原码除法算法原理
主要内容:原码除法两个原码表示的数相除时,商的符号由两数的符号“异或”求得,即同号时为正,异号为负。商的数值可由两数的绝对值相除求得。手工算除法x=–0.1011y=0.1101求x÷y0.10110.1101⌒0.011010.010010.0011010.0001010.000011010.00000111
1商符单独处理心算上商余数不动低位补“0”减右移一位的除数x÷y=–0.1101余数
0.0000011100.101000
??2.4.1原码除法笔算特点:(1)每次都是由心算来比较余数和除数的大小,余数大时,商1;余数小时,商0。(2)每做一次减法,总是保持余数不动,而除数向右移一位。(3)商的符号单独处理。机器实现:机器必须通过减法,余数为正够减,余数为负表示不够减。不够减,则加上除数,这叫恢复余数法;不够减,下次加除数,这叫加减交替法(即不恢复余数法)。
0.101001+[-y]补
1.0011.110001+[y]补
0.1110.101001+[-y]补×2-1
1.10010.001101+[-y]补×2-2
1.110011.111111+[y]补×2-2
0.00111
0.001101+[-y]补×2-3
1.1110010.000110例,x=0.101001,y=0.111,求x/y。
[x]补
=0.101001[y]补
=0.111[-y]补
=1.001∴q=q0.q1q2q3=0.101r=0.000110恢复余数恢复余数不够减的次数不固定。注意:减法在机器中是通过补码加法完成的。q0=0q1=1q2=0q3=1恢复余数法假设要计算x÷y,,当上商qi时,x减的是y×2-i,余数为r;r<0,表示不够减,上商0,并恢复余数,即r=r+y×2-i,下次减y×2-(i+1);∵
r+y×2-i-y×2-(i+1)=r+y×2-(i+1)
∴可不恢复余数,下次对余数做加法。
这种不恢复余数除法,叫做加减交替法。加减交替法的原理
0.101001+[-y]补
1.0011.110001+[y]补×2-1
0.01110.001101+[-y]补×2-2
1.110011.111111+[y]补×2-30.0001110.000110例,x=0.101001,y=0.111,求x/y。
[x]补=0.101001,[y]补=0.111,[-y]补=1.001补码移1位补码移2位补码移3位q=q0.q1q2q3=0.101r=0.000110加减法的步数固定!每步实际是做补码加法!余数<0,商0,下次加;余数≥0,商1,下次减。q0=0q1=1q2=0q3=1加减交替法(结果和恢复对比)2.4.2并行除法器
1.可控加、减法(CAS)单元P=0,这时A+B+Ci,Ci是进位怎样实现A-B?P=1,这时A+B+Ci,Ci是借位P=0,加P=1,减加减交替法的阵列除法器P=1,首次做减法。反馈线做最右边CAS的Ci输入!当P=1,C3=1,实现+[-B]补当P=0,C4=0,实现+[B]补
0.101001+[-y]补
1.0011.110001+[y]补×2-1
0.01110.001101+[-y]补×2-2
1.110011.111111+[y]补×2-30.0001110.0001102.5定点运算器的组成运算器的基本组成算术/逻辑运算单元(ALU)、数据缓冲寄存器、通用寄存器、多路转换器、数据总线等。2.5.1
逻辑运算计算机中除了进行加、减、乘、除等基本算术运算外,还可对两个或一个逻辑数进行逻辑运算。所谓逻辑数是指不带符号的二进制数。利用逻辑运算可以进行两个数的比较,或者从某个数中选取某几位等操作。主要有逻辑非(反)、逻辑加(或)、逻辑乘(与)、逻辑异或四种基本运算。2/6/20235:13AM1.逻辑非运算
逻辑非也称求反。如:
x1=01001011,x2=11110000,求x1,x2。x1=10110100x2=000011112.逻辑加运算按位求它们的“或”x=10100001,y=10011011,求x+y。
10100001x
+
10011011y
10111011z3.逻辑乘运算按位求它们的“与”
x=10111001,y=11110011,求x*y。
10111001x
*
11110011y
10110001z2/6/20235:13AM4.逻辑异运算按位求它们的模2和x=10101011,y=11001100,求x⊕y。[解:]
10101011x
⊕11001100y
01100111z即x⊕y=011001112.5.2多功能算术逻辑运算单元行波进位加法器只能完成加、减法,不能完成多样的算术运算,同时,还不能完成逻辑运算。对全加器的输入先进行多样化组合——一位算数/逻辑运算单元。S0S1YiS2S3Xi00Ai00101AiBi01Ai+Bi10AiBi10Ai+Bi11011Ai逻辑表达式控制参数S0,S1,S2,S3
分别控制输入Ai
和Bi,产生Yi和Xi的函数。Yi是受S0,S1控制的Ai和Bi的组合函数。Xi是受S2,S3控制的Ai和Bi组合函数。2.5.2多功能算术逻辑运算单元Xi、Yi与控制参数(S0~S3)、输入量(Ai、Bi)的关系归纳S0S1YiS2S3Xi00Ai00101AiBi01Ai+Bi10AiBi10Ai+Bi11011Ai一个ALU芯片包含多位算逻运算电路,如4位、8位等。片内第0位向第1位的进位公式:片内第1位向第2位的进位公式:片内第2位向第3位的进位公式:片内第3位的进位(即整个4位的进位)公式:令则G称为进位发生输出,P称为进位传递输出。行波进位中,Ci依赖Ci-1;而这里的G、P使Cn+4只依赖X,Y,从而可快速产生高位ALU的进位输入。◆超前进位加法器(解决进位问题)2.5.2多功能算术逻辑运算单元playM=1执行逻辑运算74181ALU功能表十六位的ALU74181是4位先行进位ALU,若用4片74181串联,即上面实现的是,片内先行进位,片间串行进位。如果将四片74181的G、P输出端送入到74182先行进位部件(CLA),可实现第二级的先行进位,即组与组之间的先行进位。74181741817418174181CnCn+4CnCnCnCn+4Cn+4Cn+474181741817418174181CnCnCnCn+xCn+474182GPGPGPG0P0Cn+yG1P1Cn+zG2P2CnCnG3P3Cn+4G*P*此结构实现16的全先行进位。2.5.2多功能算术逻辑运算单元
74182实现了什么?74182是先行进位部件(CLA)。Cn+x=G0+P0CnCn+y=G1+P1Cn+x
=G1+G0P1+P0P1CnCn+z=G2+P2Cn+y
=G2+G1P2+G0P1P2+P0P1P2CnCn+4=G3+P3Cn+z=G3+G2P3+G1P2P3+G0P1P2+P0P1P2P3CnG*=G3+G2P3+G1P2P3+G0P1P2;P*=P0P1P2P374181741817418174181CnCnCnCn+xCn+474182GPGPGPG0P0Cn+yG1P1Cn+zG2P2CnCnG3P3Cn+4G*P*play例:利用74181、74182组成32位全先行进位ALU。分析:每片181是4位ALU,∴需要8片74181。每片182支持4片181先行进位,两片182可实现用两个16位全先行进位部件级联组成的32位ALU。串联起来的32位ALU不是32位全先行进位ALU。74181741817418174181CnCnCnCn+xCn+474182GPGPGPG0P0Cn+yG1P1Cn+zG2P2CnCnG3P3Cn+4G*P*16位内进位先行2个16位之间串行进位181181181181181181181181182182CoutCin2.5.3内部总线总线:将多个部件联系起来,支持任两个部件间的数据传送。内部总线:CPU中的部件间总线。外部总线:即系统总线,是CPU、存储器、IO子系统之间的连线。单向总线:总是沿着一个方向传送数据的总线。双向总线:分时进行两个方向传送数据的总线。play2.5.4定点运算器的基本结构基本结构包括:ALU、阵列乘除器、寄存器、多路开关、三态缓冲器、数据总线等。结构设计要点:部件间如何传送数据!单总线结构总线*任何时刻,只能有一个数据在总线上;*
ALU需要两个缓冲器,送两个操作数需要两次;*当操作数都来自寄存器,执行慢。*控制简单。2.5.4定点运算器的基本结构双总线结构任何时刻,可有两个数据在总线上。送两个操作数到ALU,只需一个操作,但结果不能直接送总线;如果在ALU出端设缓冲器,则结果可直接连到总线。特殊寄存器分为两组,通用寄存器的数据可送至任何一个特殊寄存器。2.5.4定点运算器的基本结构三总线结构算术逻辑运算可以一步完成。注意,输出选通脉冲要考虑ALU的计算延迟。旁路器可用于总线间的直接传送。play2.6浮点运算方法和运算器2.6.1浮点加法、减法运算2.6.2浮点乘法、除法运算2.6.3浮点运算流水线2.6.1浮点加法、减法运算运算规则:浮点加/减法操作流程:0操作数检查对阶,“小阶向大阶看齐”尾数求和结果规格化,“向左规格化”、“向右规格化”舍入处理溢出判断2.6.1浮点加法、减法运算浮点加/减法操作流程0操作数检查对于x±y,计算机先判断x和y是否为浮点数零;如x=0,z=±y;如y=0,z=x。都不是零,进入“对阶”阶段。对阶先求;若,进入“尾数求和”阶段。否则,“小阶向大阶看齐”。假设,将Mx右移位,Ex置为Ey。若大阶向小阶看齐,尾数左移,可能引起最高有效位的丢失,造成较大误差。例:1.0110,左移2位,101.1010;右移2位,0.0101102.6.1浮点加法、减法运算浮点加/减法操作流程尾数求和加法:[Mx+My]补=[Mx]补+[My]补减法:[Mx-My]补=[Mx]补-[My]补=[Mx]补+[-My]补
尾数结果为什么要规格化?
尾数加/减运算之后得到的数可能不是规格化数,为了增加有效数字的位数,提高运算精度,必须进行结果规格化操作。例如:0.00011101或111.0011为非规格化数结果规格化
1/2≤|M|<1(跟IEEE754区分开) 对于原码尾数最高位为1,对于补码负数尾数最高位为0,设尾数用双符号位表示,经过加/减运算之后,可能出现以下几种情况:对于原码00.1xx…x和11.1xx…x情况就是标准的规格化数。对于补码00.1xx…x和11.0xx…x情况就是标准的规格化数。怎样规格化?非规格化数据的处理
对于原码表示的00.0xx…x和11.0xx…x需要使尾数左移以实现规格化.
对于补码表示的00.0xx…x和11.1xx…x需要使尾数左移以实现规格化,这个过程称为左规。尾数每左移一位,阶码相应减1直至成为规格化数为止。
左规可以进行多次。对于01.xxx…x和10.xxx…x这两种情况在定点加减运算中称为溢出;但浮点加减运算中,只表明此时尾数的绝对值大于1,而并非真正的溢出。这种情况应将尾数右移以实现规格化。这个过程称为右规。尾数右移一位,阶码相应加1
右规最多只有一次。非规格化数据的处理练习原码00.001010111.0101011补码00.010111111.1010111溢出01.111011110.10110112.6.1浮点加法、减法运算浮点加/减法操作流程舍入处理对阶、结果向右规格化时,尾数右移;尾数存储长度有限!右移m次,会使尾数的最低m位丢失!0舍1入法最后移出1,则尾数末位加1;移出0,不做修正。恒置1法只要右移,尾数末尾恒置1。IEEE754中的四种舍入处理就近舍入(即四舍五入)若移出10010,即>10000,则尾数末位加1;若移出01111,即<10000,则直接截掉!若移出10000,若尾数末位为0,则截掉;反之,末位加1SE(8)M(23位)10010101+111001+10111SE…10111000SE…11002.6.1浮点加法、减法运算浮点加/减法操作流程舍入处理IEEE754中的四种舍入处理朝0舍入向尾数绝对值变小方向舍入,即截掉移出部分。朝+∞舍入对于正数,只要移出的数位有1,则尾数末位加1;对于负数,直接截掉!朝-∞舍入对于正数,直接截掉!对于负数,只要移出的数位有1,则尾数末位加1。2.6.1浮点加法、减法运算浮点加/减法操作流程溢出处理阶码上溢浮点数的指数e超出机器阶码表示的最大值。结合数符,可判定浮点数为+∞或-∞。阶码下溢浮点数的指数e超出机器阶码表示的最小值。可判定浮点数0。尾数上溢尾数求和时,产生向小数点左侧的进位,可右规消除!尾数下溢尾数右移时,尾数最低位流出,可舍入处理!浮点加/减法操作流程※0操作数检查※对阶,“小阶向大阶看齐”※尾数求和※结果规格化,“左规”、“右规”※舍入处理※溢出判断例28:x=2010×0.11011011,y=2100×(-0.10101100),求x+y。解:阶码采用双符号位,阶码、尾数采用补码表示
[x]浮=00010,0.11011011;[y]浮=00100,1.01010100
1)对阶。
x对阶(小阶向大阶看齐):[x]浮=00100,0.00110110(11)2)尾数求和。3)规格化。[Mx+My]补=1.10001010(11)0.00110110(11)+1.010101001.10001010(11)[Mx+My]补=1.00010101(10)4)舍入处理。采用0舍1入法,得:00011,1.000101105)判溢出。阶码符号位为00,不溢出。最后结果:
x+y=2011×(-0.11101010)
00011,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 万达合同范本
- 以商代储合同范本
- 二手货架拆除合同范本
- 公寓管理维修合同范本
- 信息居间合同范本
- 写摊位合同范本
- 乡村医生聘用合同范本
- 与电力合同范本
- 产业规划合同范本
- 2025年非营利组织文化推广计划
- 福建省泉州市南安市2024-2025学年九年级上学期期末考试语文试题(无答案)
- 2025年中国电子烟行业发展前景与投资战略规划分析报告
- 无人机法律法规与安全飞行 第2版空域管理
- 我的小学生活
- 医疗器材申请物价流程
- 人教PEP版2025年春季小学英语三年级下册教学计划
- 2024上海市房屋租赁合同范本下载
- 2024年世界职业院校技能大赛高职组“市政管线(道)数字化施工组”赛项考试题库
- 华为研发部门绩效考核制度及方案
- CSC资助出国博士联合培养研修计划英文-research-plan
- 2025年蛇年年度营销日历营销建议【2025营销日历】
评论
0/150
提交评论