




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第2 2章章 运算方法和运算器运算方法和运算器本章内容:本章内容:v数据与文字的表示方法数据与文字的表示方法 v定点加法、减法运算定点加法、减法运算v定点乘法运算、除法运算定点乘法运算、除法运算v定点运算器的组成定点运算器的组成 v浮点运算方法和浮点运算器浮点运算方法和浮点运算器2.1 数据与文字的表示方法数据与文字的表示方法v数据表示方法数据表示方法 计算机中常用的数据表示格式有两种,一是计算机中常用的数据表示格式有两种,一是定点格式定点格式,二,二是是浮点格式浮点格式。1)1)定点表示:约定机器中所有数据的小数点位置是固定的。由定点表示:约定机器中所有数据的小数点位置是固定的。由于约定在
2、固定的位置,所以小数点就不再使用记号于约定在固定的位置,所以小数点就不再使用记号“.”.”来表来表示。假设用示。假设用n位数字表示一个定点数位数字表示一个定点数x x,x xn n在最左边,并用数值在最左边,并用数值0 0和和1 1分别表示正号和负号,称为分别表示正号和负号,称为数符数符;x xn-1n-1到到x x1 1表示该数的绝表示该数的绝对值,称为对值,称为尾数尾数,则:,则:假想的小数点位置假想的小数点位置 xn xn-1 x3x2x1假想的小数点位置假想的小数点位置xn xn-1x3x2x1定点纯小数定点纯小数定点纯整数定点纯整数定点纯小数的表示范围:定点纯小数的表示范围:0|12
3、n xn x3x2x1 各位均为各位均为0 0时,时,x x绝对值最小为绝对值最小为0 0;xn x3x2x1 各位均为各位均为1 1时,时,x x绝对值最大为绝对值最大为1 12 2n n定点纯整数的表示范围:定点纯整数的表示范围:0| 2n1 xn x3x2x1各位均为各位均为0 0时,时,x x绝对值最小为绝对值最小为0 0;xn x3x2x1各位均为各位均为1 1时,时,x x绝对值最大为绝对值最大为2 2n n1 1 xn xn-1 x3x2x1xn xn-1 x3x2x1目前计算机多采用定点纯整数表示方法,对定点数的运算称为整数运算目前计算机多采用定点纯整数表示方法,对定点数的运算
4、称为整数运算 例例:某机器采用某机器采用8 8位定点整数表示方式,尾数是位定点整数表示方式,尾数是7 7位,数符是位,数符是1 1位,问最大的正数是多少?最小的负数是多少?若采用位,问最大的正数是多少?最小的负数是多少?若采用1616位定位定点整数表示方式,尾数是点整数表示方式,尾数是1515位,数符是位,数符是1 1位,问最大的正数是位,问最大的正数是多少?最小的负数是多少?多少?最小的负数是多少?解:解:8 8位定点整数表示:位定点整数表示:0 11111110 11111111 11111111 1111111最大正数:最大正数:最小负数:最小负数:X=(2X=(27 7-1)-1)10
5、10=(+127)=(+127)1010X=-(2X=-(27 7-1)-1)1010=(-127)=(-127)1010 16 16位定点整数表示:位定点整数表示:0 1111111111111110 111111111111111最大正数:最大正数:最小负数:最小负数:X=(2X=(21515-1)-1)1010=(+32767)=(+32767)1010X=-(2X=-(21515-1)-1)1010=(-32767)=(-32767)10101 1111111111111111 1111111111111112)浮点表示:定点数表示的数的范围有限,为了扩展数的表)浮点表示:定点数表示的
6、数的范围有限,为了扩展数的表示范围,按照科学记数法表示数据的方式,任何一个二进制数示范围,按照科学记数法表示数据的方式,任何一个二进制数N都可以表示成如下的格式:都可以表示成如下的格式:NM* *2eM :尾数,是一个定点纯小数,决定数据的表示精度:尾数,是一个定点纯小数,决定数据的表示精度 e :指数,是一个定点纯整数:指数,是一个定点纯整数,决定数据的表示范围,决定数据的表示范围 这样就可以把一个数的尾数和阶码在计算机的不同存储这样就可以把一个数的尾数和阶码在计算机的不同存储单元中分别予以存储,在这种方法中小数点的位置随阶码不单元中分别予以存储,在这种方法中小数点的位置随阶码不同在一定范围
7、内可以移动,这种表示数据的方法称为同在一定范围内可以移动,这种表示数据的方法称为浮点表浮点表示法示法。(1.75)(1.75)1010=(1.11)=(1.11)2 2=(0.111)=(0.111)2 22 21 1=(0.0111)=(0.0111)2 22 22 2 v定点表示定点表示-机器码机器码 一般书写所表示的数据称为一般书写所表示的数据称为真值真值,在计算机中通常把符号,在计算机中通常把符号位和数字位一起编码来表示相应的数,位和数字位一起编码来表示相应的数,这些编码称为这些编码称为机器码机器码。常用的机器码有原码、反码、补码和移码。常用的机器码有原码、反码、补码和移码。定点整数:
8、定点整数:X =(+6)X =(+6)10 10 XX原原= =0 000001100000110X =(-6)X =(-6)10 10 XX原原=2=27 7 (-6) =(-6) = 1 100001100000110定点小数:定点小数:X =(+0.75)X =(+0.75)1010 X X原原= =0 0.11.11X =(-0.75)X =(-0.75)1010 X X原原= =1 1.11.111 1)原码)原码 对于一个真值对于一个真值x,x,用用n n位定点整数表示的原码形式为位定点整数表示的原码形式为x xn-1n-1xx1 1x x0 0, , 其原码表示的定义是:其原码表
9、示的定义是: 原原 0 02 2n-1n-1 2 2n-1 n-1 - -2 2n-1 n-1 + |+ | -2| -2n-1 n-1 0 0采用采用8 8位定点原码表示,则:位定点原码表示,则:原码的特点:原码的特点:原码的数值部分是该数的绝对值,最高位表示符号位,最高原码的数值部分是该数的绝对值,最高位表示符号位,最高位为位为0是正数,最高位为是正数,最高位为1是负数。是负数。表示范围:表示范围: -2-2n nX2X2n n (若(若n=8n=8即:即:-128X128-128X128)111111111000000110000000000000000000000101111111-1
10、27 -1 -0 +0 +1 +127-127 -1 -0 +0 +1 +127采用原码表示法简单易懂,但是运算复杂。采用原码表示法简单易懂,但是运算复杂。0 0有两种表示法:有两种表示法:+0+0原原=0000 0000 -0=0000 0000 -0原原=1000 0000=1000 0000 -3+ -3+(+5+5)= +2= +2 1 10000011 -30000011 -3+ + 0 00000101 +50000101 +5 怎么计算?怎么计算? 符号位单独处理符号位单独处理 0000101 50000101 5 - 0000011 3 - 0000011 3 0000010
11、2 0000010 2 结果选择符号位结果选择符号位 0 00000010 20000010 22)2)补码补码 我们以钟表对时为例说明补码的概念。假设现在的标准时我们以钟表对时为例说明补码的概念。假设现在的标准时间为间为4 4点正;而有一只表已经点正;而有一只表已经7 7点了,为了校准时间,可以采用点了,为了校准时间,可以采用两种方法:两种方法: 一是将时针向后退一是将时针向后退3 3格,即格,即7-3=4 mod 127-3=4 mod 12; 一是将时针向前拨一是将时针向前拨9 9格,即格,即7+9=4 mod 127+9=4 mod 12; 这两种方法都能对准到这两种方法都能对准到4
12、4点,由此可以看出,点,由此可以看出,-3-3和和+9+9在对在对1212求余数时是等价的,我们称求余数时是等价的,我们称9 9是是(-3)(-3)对对1212的的补码补码,可以用数,可以用数学公式表示:学公式表示: -3-3+9+9(mod12mod12) 同理:同理: -4-4+8+8(mod12mod12) -5-5+7+7(mod12mod12) mod12mod12的意思就是的意思就是1212模数,这个模数,这个“模模”表示被丢掉的数值。表示被丢掉的数值。上式在数学上称为同余式。上式在数学上称为同余式。00000000考虑计算机中的考虑计算机中的8 8位定点存储:位定点存储:1111
13、1111最小最小最大最大+ 1+ 100000000mod 256mod 256-1 = 255 -1 = 255 -2 = 254 -2 = 254 -255 = 1 -255 = 1 -256 = 0 -256 = 0 -128 = 128 -128 = 128 -129 = 127 -129 = 127 考虑计算机中的考虑计算机中的8 8位补码表示:位补码表示:mod 256mod 256-1 = 255=11111111 -1 = 255=11111111 -2 = 254=11111110 -2 = 254=11111110 -255 = 1 = 00000001-255 = 1 =
14、 00000001-256 = 0 = 00000000 -256 = 0 = 00000000 -128 = 128=10000000 -128 = 128=10000000 -129 = 127=01111111 -129 = 127=01111111 mod 256mod 256-1 = 11111111 -1 = 11111111 -2 = 11111110 -2 = 11111110 1 = 00000001 1 = 00000001 0 = 00000000 0 = 00000000 -128 = 10000000 -128 = 10000000 127 = 01111111 12
15、7 = 01111111 补码表补码表示负数示负数8 8位补码的表示范围:位补码的表示范围:-128-128127127补码的优点补码的优点1 1)补码表示的负数范围可以到)补码表示的负数范围可以到2 2n n2 2)补码表示的数据没有符号位)补码表示的数据没有符号位( (我们还是习惯上认为补码最高位为符号位我们还是习惯上认为补码最高位为符号位) )10000000100000011111111100000000000000000000000101111111-128 -127 -1 -0 +0 +1 +127-128 -127 -1 -0 +0 +1 +1278 8位二进制数的补码表示:位二
16、进制数的补码表示:数数 补码补码 2 00000010 8 0000100011 00001011-3 11111101 -5 11111011-8 11111000 2+(- -5)=- -3 00000010 2+ 11111011 - -5 11111101 - -3 - -3+(- -5)=- -8 11111101 - -3+ 11111011 - -5 11111000 - -8 对于一个真值对于一个真值x,x,用用n n位定点整数表示的补码形式为位定点整数表示的补码形式为x xn-1n-1xx1 1x x0 0, , x xn-1n-1为为“符号位符号位”,其补码表示的定义是:,
17、其补码表示的定义是: 补补(mod 2(mod 2n n1 1) ) 0 02 2n-1n-1 2 2n n+ +2 2n n-|-| -2| -2n-1 n-1 0 0X X(11)(11)1010 x x补补= (11)= (11)1010= = 0 000010110001011X X(-13)(-13)1010 x x补补= 2= 28 8 + +(-13-13)= (243)= (243)1010= = 1 111100111110011 根据补码定义,求负数的补码需要加上一个负数根据补码定义,求负数的补码需要加上一个负数x x或者减或者减去去|x|x|。使用补码就是为了在运算中消除
18、符号位的因素,但是。使用补码就是为了在运算中消除符号位的因素,但是在求补码的过程中还是需要考虑符号位,显然没有达到目的。在求补码的过程中还是需要考虑符号位,显然没有达到目的。下面介绍的反码表示法可以解决负数的求补问题。下面介绍的反码表示法可以解决负数的求补问题。采用采用8 8位定点补码表示,则:位定点补码表示,则:3 3)反码:正数的反码等于原码,负数的反码等于除符号位外反码:正数的反码等于原码,负数的反码等于除符号位外其余二进制数码其余二进制数码0变成变成1,1变成变成0。 正数:正数: xx反反 = x= x原原 = x= x 负数:负数: 符号位不变,其余变反符号位不变,其余变反定点整数
19、:定点整数: X X(11)(11)1010 x x原原00001011 x00001011 x反反=x=x原原=00001011=00001011X X(-13)(-13)1010 x x原原1 10001101 x0001101 x反反= =1 111100101110010X X-0 x-0 x原原1 10000000 x0000000 x反反= =1 111111111111111X X+0 x+0 x原原00000000 x00000000 x反反=00000000=00000000定点小数:定点小数:X X(0.75)(0.75)10 10 x 原原0.11 0.11 x x 反反
20、0.110.11X X(-0.25)(-0.25)1010 x x原原= =1 1.01 .01 x x 反反1 1.10.10补码规则:正数的补码等于原码,负数的补码等于反码加补码规则:正数的补码等于原码,负数的补码等于反码加1。 正数:正数: xx补补= x= x原原 负数:负数: xx补补= x= x反反 +1+1定点整数:定点整数:X X(11)(11)10 10 x x原原00001011 x00001011 x补补=x=x原原= 00001011= 00001011X X(-13)(-13)1010 x x原原1 10001101 x0001101 x补补=x=x 反反+1=+1=
21、1 111100111110011X X-0 x-0 x原原1 10000000 x0000000 x补补=x=x反反+1=00000000+1=00000000X X+0 x+0 x原原00000000 x00000000 x补补=00000000=00000000定点小数:定点小数:X X(0.75)(0.75)1010 x 原原0.11 0.11 x x 补补0.110.11X X(-0.25)(-0.25)1010 x x原原= =1 1.01 .01 x x 补补1 1.11.11111111111000000110000000000000000000000101111111-127
22、 -1 -0 +0 +1 +127-127 -1 -0 +0 +1 +127100000001111111011111111000000000000000101111111-127 -1 -0 +0 +1 +127-127 -1 -0 +0 +1 +12710000000100000011111111100000000000000000000000101111111-128 -127 -1 -0 +0 +1 +127-128 -127 -1 -0 +0 +1 +1278 8位二进制数的反码表示:位二进制数的反码表示:8 8位二进制数的补码表示:位二进制数的补码表示:8 8位二进制数的原码表示:
23、位二进制数的原码表示:v补码的优点补码的优点1 1)补码中)补码中0 0值唯一值唯一 2 2)补码表示的负数范围可以到)补码表示的负数范围可以到2 2n n3 3)补码表示的数据没有符号位)补码表示的数据没有符号位( (我们还是习惯上认为补码最高位为符号位我们还是习惯上认为补码最高位为符号位) ) 采用采用8 8位定点移码表示,位定点移码表示,以以表示真值,则:表示真值,则: 移移2 27 7 = 128 + = 128 + 例如:当正数例如:当正数10101011010101时:时: 移移2 27 72 27 7 +1010101+101010111010101110101011 1,101
24、01011010101 当负数当负数10101011010101时:时: 移移2 27 72 27 7 -1010101-101010100101011001010110 0,01010110101011注意:注意:移码中最左边一位是符号位。显然,移码中符号位表示移码中最左边一位是符号位。显然,移码中符号位表示的规律与原码、补码、反码相反。即的规律与原码、补码、反码相反。即1 1表示正数,表示正数,0 0表示负数。表示负数。4)4)移码移码 对于一个真值对于一个真值x,x,用用n n位定点整数表示的移码形式为位定点整数表示的移码形式为x xn-1n-1xx1 1x x0 0, , x xn-1
25、n-1为为“符号位符号位”,则移码的则移码的传统定义传统定义是是: 移移2 2n-1n-1 (1.75)10 =(1.11)2 =1.1120 =0.11121 =0.011122 若不对浮点数的表示作出明确规定,那么同一个浮点若不对浮点数的表示作出明确规定,那么同一个浮点数的表示方法不是唯一的:数的表示方法不是唯一的: 按照按照IEEE754IEEE754标准标准,3232位浮点数的标准格式为:位浮点数的标准格式为: 31 30 23 22 0SMES S位(位(1bit1bit):是浮点数的符号位,:是浮点数的符号位,0表示正数,表示正数,1表示负数。表示负数。规格化的浮点数表示:规格化的
26、浮点数表示:+0.1+0.1* * * * * *v浮点表示浮点表示-IEEE754-IEEE754E E位(位(8bit8bit):阶码,:阶码,IEEE754IEEE754规定此阶码是比实际数据的指数规定此阶码是比实际数据的指数真值多真值多127127。如果浮点数的指数真值是。如果浮点数的指数真值是e,e,则阶码则阶码E Ee+127e+127 31 30 23 22 0SME例如:例如: N N1.01011.0101* *2 2-127-127,指数真值是指数真值是e e-127-127,则阶码,则阶码E E0 0例如:例如: N N1.10011.1001* *2 2-12-12,指
27、数真值是指数真值是e e-12-12,则阶码,则阶码E E115115 使用带偏移量的阶码(移码)的好处是将有符号数使用带偏移量的阶码(移码)的好处是将有符号数(-127(-127+128)+128)转化为了无符号数转化为了无符号数(0(0255),255),所以所以 阶码域阶码域E E不用考虑符号位不用考虑符号位 便于两个阶码之间的比较便于两个阶码之间的比较 阶码域大者指数真值也大阶码域大者指数真值也大例如:例如: N N1.10011.1001* *2 2128128,指数真值是指数真值是e e128128,则阶码,则阶码E E255255例如:例如: N N1.01011.0101* *
28、2 28 8,指数真值是指数真值是e e8 8,则阶码,则阶码E E135135M位位(23)(23)位:尾数,小数点在尾数域的最前面,为了尾数的位:尾数,小数点在尾数域的最前面,为了尾数的表示精度提高一位,表示精度提高一位,IEEEIEEE规格化浮点数规定小数点左边一位规格化浮点数规定小数点左边一位必须为必须为1 1,即,即1.M1.M( (如如1.75=1.75=1.1120),),该位经常不予存储,所该位经常不予存储,所以以M位存储的是有效数据的小数部分,位存储的是有效数据的小数部分,因此尾数域因此尾数域M所表示所表示的值应该是的值应该是1.M1.M。 IEEE754 IEEE754 标
29、准中,一个规格化存储的标准中,一个规格化存储的3232位浮点数位浮点数的真的真值可表示为:值可表示为: x(-(-1) )s * * M * * 2e(-(-1) )s * *( (1.M) )* * 2E- -127 例例 若浮点数若浮点数的的754754标准存储格式为标准存储格式为(41360000)(41360000)1616,求其浮,求其浮点数的十进制数值。点数的十进制数值。 31 30 23 22 0SME 指数指数e e阶码阶码12712710000010100000100111111101111111(3)(3)1010尾数尾数1 1. .M1 1.011 0110 0000 0
30、000 0000 0000.011 0110 0000 0000 0000 00001 1.011011.011011于是有于是有( (1)1)s s(1.(1.M) )2 2e e (1.011011)(1.011011)2 23 31011.0111011.011(11.375)(11.375)1010 将十六进制数展开后,可得二进制数格式为:将十六进制数展开后,可得二进制数格式为:(41360000)(41360000)16 16 0100 0001 0011 0110 0000 0000 0000 0000 0100 0001 0011 0110 0000 0000 0000 0000
31、 SE(8E(8位位) )M(23(23位位) ) 指数指数e e阶码阶码12712701111110011111100111111101111111(-1)(-1)1010尾数尾数1 1. .M1 1.001 0001 0000 0000 0000 0000.001 0001 0000 0000 0000 00001 1.0010001.0010001于是有于是有( (1)1)s s(1.(1.M) )2 2e e (1.0010001)(1.0010001)2 2-1-10.100100010.10010001(0.5625)(0.5625)1010 将十六进制数展开后,可得二进制数格式为
32、:将十六进制数展开后,可得二进制数格式为:(3F110000)(3F110000)16 16 0011 1111 0001 0001 0000 0000 0000 0000 0011 1111 0001 0001 0000 0000 0000 0000 SE(8E(8位位) )M(23(23位位) ) 例例 若浮点数若浮点数的的754754标准存储格式为标准存储格式为(3F110000)(3F110000)1616,求其,求其浮点数的十进制数值。浮点数的十进制数值。 首先分别将整数和分数部分转换成二进制数:首先分别将整数和分数部分转换成二进制数: (20.59375)(20.59375)101
33、010100.1001110100.10011然后移动小数点,使其在第然后移动小数点,使其在第1 1,2 2位之间位之间 10100.1001110100.100111.0100100111.0100100112 24 4e e4 4于是得到:于是得到: S S0 0,E E4 4127127131=131=1000001110000011,M010010011010010011 最后得到最后得到3232位浮点数的二进制存储格式为:位浮点数的二进制存储格式为:0 0100 0001 1100 0001 1010010 0100 1100 0000 0000 00000100 1100 0000
34、 0000 0000(41A4C000)(41A4C000)1616 例例 将将(20.59375)(20.59375)1010转换成转换成754754标准的标准的3232位浮点数的二进制位浮点数的二进制存储格式。存储格式。注意:注意:v当阶码当阶码E E为全为全0 0且尾数且尾数M M也为全也为全0 0时,表示的真值时,表示的真值x x为零,结合符为零,结合符号位号位S S为为0 0或或1 1,有正零和负零之分。,有正零和负零之分。v当阶码当阶码E E为全为全1 1且尾数且尾数M M为全为全0 0时,表示的真值时,表示的真值x x为无穷大,结合为无穷大,结合符号位符号位S S为为0 0或或1
35、 1,就有,就有+和和-之分。之分。00000000000000000000000000000000正零正零10000000000000000000000000000000负零负零00000000000000000000000011111111+10000000000000000000000011111111-除去除去E E0 0和和255255,E E的范围是的范围是1 1254254,指数真值,指数真值e e的取值范围是的取值范围是-126-126+127+127 例例 假设由假设由S,E,MS,E,M三个域组成的一个三个域组成的一个3232位二进制字所表示的非零规格化浮位二进制字所表示的
36、非零规格化浮点数点数, ,真值表示为(注意该例不是真值表示为(注意该例不是IEEEIEEE格式):格式): ( (1)1)s s(1.M)(1.M)2 2E E128128问:它所表示的规格化的最大正数、最小正数、最大负数、最小负数是多问:它所表示的规格化的最大正数、最小正数、最大负数、最小负数是多少?少?01111111111111111111111111111111最大正数:最大正数:11(1(12 2-23-23)2 212712700000000000000000000000000000000最小正数:最小正数:1.01.02 2-128-12811111111111111111111
37、111111111111最小负数:最小负数:-1-1(1(12 2-23-23)2 212712710000000000000000000000000000000最大负数:最大负数:-1.0-1.02 2-128-128v十进制数串的表示方法十进制数串的表示方法 BCDBCD码形式:一个字节存放一个十进制的数位或符号位。码形式:一个字节存放一个十进制的数位或符号位。00000010000000110000010100001000一个字节(一个字节(8bit8bit)十进制数串为:十进制数串为:2358压缩压缩BCDBCD码码形式:一个字节存放两个十进制的数位。它比前一形式:一个字节存放两个十进
38、制的数位。它比前一种形式节省存储空间,又便于直接完成十进制数的算术运算,种形式节省存储空间,又便于直接完成十进制数的算术运算,是广泛采用的较为理想的方法。是广泛采用的较为理想的方法。 1000001000111100一个字节(一个字节(8bit8bit)001101111101一个字节(一个字节(8bit8bit)十进制数串为:十进制数串为:823C表示正表示正D表示负表示负十进制数串为:十进制数串为:- -370000不满一字节用不满一字节用0补齐补齐v 字符表示方法字符表示方法字符的表示:字符的表示:ASCIIASCII码码( (美国国家信息交换标准字符码美国国家信息交换标准字符码) )
39、标准标准ASCIIASCII码包括码包括5252个英文大小写字母,个英文大小写字母,1010个数字,以及个数字,以及标点符号和特殊字符共标点符号和特殊字符共128128个元素,因此二进制编码一共需要个元素,因此二进制编码一共需要7 7位,规定最高一位为位,规定最高一位为0 0,所以,所以1 1个字节表示个字节表示1 1个字符。个字符。v字符串的表示方法字符串的表示方法 指连续一串字符,它们在主存中占用连续多个字节,每个指连续一串字符,它们在主存中占用连续多个字节,每个字节存一个字符的字节存一个字符的ACSIIACSII码。例如字符串码。例如字符串“thenthen”,占用,占用4 4个字节个字
40、节的连续内存空间,存放对应字符的的连续内存空间,存放对应字符的ASCIIASCII,即,即8484、7272、6969、7878v 汉字的表示方法汉字的表示方法汉字的输入编码:拼音码,字型码汉字的输入编码:拼音码,字型码汉字的存储编码:用两个字节表示一个汉字,为了和汉字的存储编码:用两个字节表示一个汉字,为了和ASCIIASCII码码 区分区分两字节最高位均为两字节最高位均为1汉字的输出编码:点阵表示的字模码汉字的输出编码:点阵表示的字模码v补码加法补码加法 基本公式:基本公式: xx补补 + y+ y补补 = x+y= x+y补补 计算机数据:计算机数据:xx补补 yy补补不考虑不考虑x和和
41、y的正负的正负xx补补 + y+ y补补 = x+y= x+y补补 当负数用补码表示后,符号位作为数据的一部分一起参加当负数用补码表示后,符号位作为数据的一部分一起参加运算,运算器运算,运算器不用考虑不用考虑参加加法运算的参加加法运算的操作数的正负操作数的正负以及以及结果结果的正负的正负,任意数的加法就可以化作正数加法来作。,任意数的加法就可以化作正数加法来作。公式证明思路:分三种情况:公式证明思路:分三种情况: (a) x(a) x、y y均为正值(均为正值(0,0,0 0) (b) x(b) x、y y一正一负(一正一负(0,0,0 0 或者或者0,00) (c) x(c) x、y y均为
42、负值(均为负值(0,0,00y0,有,有yy补补 yy原原,同时,同时-y-y原原x x1 1x x2 2x x3 3xxn n -y-y补补x x1 1x x2 2x x3 3xxn n+1+1 所以所以:-y:-y补补x x1 1x x2 2x x3 3xxn n+1= y+1= y原原+1+1yy补补 +1+1如果如果y0y0y0,有有 yy补补-y-y原原 x x1 1x x2 2x x3 3xxn n , yy补补yy反反+1+1x x1 1x x2 2x x3 3xxn n +1+1 y y补补x x1 1x x2 2x x3 3xxn n +1+1 x x1 1x x2 2x x
43、3 3xxn n-1-1 yy补补 yy补补-1-1 所以所以:-y:-y补补yy补补 +1+1补码减法的补码减法的基本公式:基本公式: xx补补 - y- y补补xx补补 + -y+ -y补补 机器中数据都是以补码形式出现,遇到减法操作时根据公机器中数据都是以补码形式出现,遇到减法操作时根据公式会转成加法运算,利用硬件如何快速由式会转成加法运算,利用硬件如何快速由yy补补得到得到-y-y补补呢?呢? 从从补补求求补补的法则是:的法则是: 对对补补“包括符号位求反且最末位加包括符号位求反且最末位加1”,即可得到即可得到补补 已知已知1补补1.0010, 2补补0.1101,求求1补补,2补补解
44、:解:1补补1.00101补补 1补补2-40.11010.00010.11102补补0.11012补补 2补补2-41.00100.00011.0011 利用硬件如何实现求反加利用硬件如何实现求反加1呢?加呢?加1好实现,求反呢?好实现,求反呢? 1 10,0 11,二进制数和,二进制数和1异或等于求反。异或等于求反。 1 01,0 00,二进制数和,二进制数和0异或等于不变。异或等于不变。可以在异或门的一端输入可以在异或门的一端输入1或者或者0决定数据求反或者不变决定数据求反或者不变计算机数据:计算机数据:xx补补 yy补补将减法变加法将减法变加法xx补补-y-y补补= =xx补补+-y+
45、-y补补 = x-y= x-y补补 当负数用补码表示后,减法的运算就可以化成加法的运当负数用补码表示后,减法的运算就可以化成加法的运算去做,这样运算器就可以只有一个加法器,不必在配一个算去做,这样运算器就可以只有一个加法器,不必在配一个减法器了,简化了硬件的设计。减法器了,简化了硬件的设计。程序员指令程序员指令: x x 减减 y yx - yx - y补码减法基本公式:补码减法基本公式: xx补补 - y- y补补xx补补 + -y+ -y补补v补码的优点补码的优点 1 1)补码中)补码中0 0值唯一值唯一 2 2)补码表示的负数范围可以到)补码表示的负数范围可以到2 2n n 3 3)补码
46、表示的负数可以把减法运算变做加法来作,把任意数的加法)补码表示的负数可以把减法运算变做加法来作,把任意数的加法变成正数的加法来作,简化硬件电路的设计。变成正数的加法来作,简化硬件电路的设计。v溢出:在定点数机器中溢出:在定点数机器中,数的大小超出了定点数能表数的大小超出了定点数能表示的范围,叫溢出。示的范围,叫溢出。1)在定点小数机中数的表示范围是)在定点小数机中数的表示范围是-1x1-1x1,如果运算过程中,如果运算过程中出现了大于出现了大于1或者小于或者小于1的情况。的情况。解解:补补0.1011 补补0.1001 补补0.1011 补补0.1001 补补1.0100 解解:补补1.001
47、11.0011 补补1.0101 补补1.0011 补补1.0101 补补0.1000 两个正数相加的结果成为负数两个正数相加的结果成为负数,这显然是错误的。这显然是错误的。例如:例如:+0.1011 +0.1001 求求x+y?例如:例如:- -0.1101 - -0.1011 求求x+y?两个负数相加的结果成为正数两个负数相加的结果成为正数,这显然是错误的。这显然是错误的。上溢出上溢出下溢出下溢出2)在定点整数机()在定点整数机(8位)中数的表示范围是位)中数的表示范围是-128x127-128x127,如果,如果运算过程中出现了大于运算过程中出现了大于127127或者小于或者小于1281
48、28的情况。的情况。解解:补补01110001 补补00110010 补补01110001 补补00110010 补补10100011解解:补补1001110110011101 补补1011101110111011 补补10011101 补补10111011 补补01011000 两个正数相加的结果成为负数两个正数相加的结果成为负数,这显然是错误的。这显然是错误的。例如:例如:+1110001 +0110010 求求x+y?例如:例如:-1100011-1100011 -1000101-1000101 求求x+y?两个负数相加的结果成为正数两个负数相加的结果成为正数,这显然是错误的。这显然是错
49、误的。上溢出上溢出下溢出下溢出如何检测溢出呢?如何检测溢出呢?v溢出判断溢出判断进位判别法:判断数据最高位的进位与符号位进位是否相同进位判别法:判断数据最高位的进位与符号位进位是否相同 V=CV=Cf fCC0 0 其中其中C Cf f为符号位产生的进位为符号位产生的进位,C,Co o为最高数据位产生的进位。为最高数据位产生的进位。 如果如果V=0, V=0, 无溢出无溢出 如果如果V=1, V=1, 有溢出有溢出 在计算机中,机器通过异或门逻辑电路判断运算是否产在计算机中,机器通过异或门逻辑电路判断运算是否产生了溢出,如果溢出就产生中断。生了溢出,如果溢出就产生中断。 补补0.1011 补补
50、0.1001 补补0.1011 补补0.1001 补补1.0100 上溢出上溢出补补1001110110011101 补补1011101110111011 补补10011101 补补10111011 补补 01011000 下溢出下溢出 双符号位法:将符号位扩展为双符号位法:将符号位扩展为2 2位,具体说就是对于正数两位,具体说就是对于正数两个符号位是个符号位是“0000”,对于负数两个符号位是,对于负数两个符号位是“1111”。两个符号两个符号位都看作数码一样参加运算。位都看作数码一样参加运算。两个数相加后,其结果的符号位两个数相加后,其结果的符号位出现出现“01”01”或或“10”10”两
51、种组合时两种组合时, ,表示发生溢出。表示发生溢出。符号位符号位“01”01”,上溢出,上溢出符号位符号位“10”10”,下溢出,下溢出符号位符号位“00”00”或者或者“11”11”,未溢出,未溢出补补0.1011 补补0.1001 补补00.1011 补补00.1001 补补01.0100 上溢出上溢出补补1001110110011101 补补10111011 补补110011101 补补110111011 补补101011000 下溢出下溢出v二进制加法二进制加法/减法器减法器 两个二进制数字两个二进制数字A Ai i,B,Bi i和一个进位输入和一个进位输入C Ci i相加相加, ,产
52、生一个和产生一个和输出输出S Si i, ,以及一个进位输出以及一个进位输出C Ci i1 1 S Si iA Ai iBBi iCCi i C Ci i1 1A Ai iB Bi iB Bi iC Ci iC Ci iA Ai i A Ai iB Bi i(A(Ai iBBi i)C)Ci i输入输入输出输出A Ai iB Bi iC Ci iS Si iC Ci+1i+10 00 00 00 00 00 00 01 11 10 00 01 10 01 10 00 01 11 10 01 11 10 00 01 10 01 10 01 10 01 11 11 10 00 01 11 11 1
53、1 11 11 1v行波进位的补码加法减法器行波进位的补码加法减法器2.3 定点乘法运算定点乘法运算 v原码并行乘法原码并行乘法 在定点计算机中在定点计算机中, ,两个原码表示的数相乘的运算规则是两个原码表示的数相乘的运算规则是: :乘积的符号位由两数的符号位按异或运算得到乘积的符号位由两数的符号位按异或运算得到, ,而乘积的数值而乘积的数值部分则是两个正数相乘之积。部分则是两个正数相乘之积。 设设n n位被乘数和乘数用定点小数表示位被乘数和乘数用定点小数表示( (定点整数也同样适用定点整数也同样适用) )被乘数被乘数 原原f f . .n n1 11 10 0 乘数乘数 原原f f . .n
54、 n1 11 10 0 则乘积则乘积 原原( (f ff f) )(0.(0.n n1 11 10 0) )* *(0.(0.n n1 11 10 0) ) 式中式中, ,f f为被乘数符号为被乘数符号, ,f f为乘数符号。为乘数符号。 人工算法人工算法 0. 1 1 0 1 0. 1 0 1 1 1 1 0 1 1 1 0 1 0 0 0 0 1 1 0 1 0. 1 0 0 0 0 1 1 1机器算法:机器算法: 机器中一种方法是多次采用机器中一种方法是多次采用“加法移位加法移位” 的方的方 法来完成,称为串行乘法器,它的硬件结构简法来完成,称为串行乘法器,它的硬件结构简 单,但是速度慢
55、,目前广泛使用的是流水式阵单,但是速度慢,目前广泛使用的是流水式阵 列乘法器,称为并行乘法器。列乘法器,称为并行乘法器。不带符号的并行乘法器不带符号的并行乘法器 已知两个不带符号的二进制整数已知两个不带符号的二进制整数A A 11011,11011,B B 10101,10101,求它的乘积。求它的乘积。位积位积列和列和 n n位无符号数乘以位无符号数乘以n n位无符号数位无符号数会产生会产生n n* *n n个位积,个位积,n+nn+n个个列和,并行乘法器的关键是快速产生列和,并行乘法器的关键是快速产生n n* *n n个位积,对位积进个位积,对位积进行相加运算产生行相加运算产生n+nn+n
56、个列和。个列和。第一步:位积的产生第一步:位积的产生观察乘法运算:观察乘法运算:0 0* *0 00 0,0 0* *1 10 0,1 1* *0 00 0,1 1* *1 11 1 相当于:相当于:a ab所以所以n n* *n n个位积可以由个位积可以由n n* *n n个与门并行产生。个与门并行产生。位积产生部件位积产生部件被乘数被乘数乘数乘数A=aA=an-1n-1 a a1 1a a0 0b bn-1n-1 b b1 1b b0 0=B=Ba a0 0b b0 0a a1 1b b0 0a an-1n-1b bn-1n-1第二步:列和的产生:利用全加器第二步:列和的产生:利用全加器
57、在在n n位无符号数乘以位无符号数乘以n n位无符号数的运算中需要位无符号数的运算中需要n n* *(n-1n-1)个全加器虚线个全加器虚线围起的是一个行波进位加法器围起的是一个行波进位加法器竖线表示输出竖线表示输出斜线表示进位输出斜线表示进位输出FAFAa1b0a1b0a4b0a4b0a3b0a3b0a2b0a2b0a0b0a0b0a4b4a4b4a4b3a4b3a4b2a4b2a4b1a4b10 00 00 00 0a0b1a0b1a1b1a1b1a1b2a1b2a0b2a0b2a3b1a3b1a2b1a2b1a1b3a1b3a0b3a0b3a3b2a3b2a2b2a2b2a3b3a3b3
58、a2b3a2b3a0b4a0b4a0b4a0b4a0b4a0b4a0b4a0b40 0p0p0p4p4p3p3p2p2p1p1p7p7p6p6p5p5p8p8 p9 p9FAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFA不带符号的并行乘法器不带符号的并行乘法器位积产生部件位积产生部件列和产生部件列和产生部件 在在n n位无符号数乘以位无符号数乘以n n位无符号位无符号数的运算数的运算计算中,需要计算中,需要n n* *n n个与个与门并行产生位积,需要门并行产生位积,需要n n* *(n-1)
59、(n-1)个全加器产生列和。个全加器产生列和。被乘数被乘数乘数乘数A=aA=an-1n-1 a a1 1a a0 0b bn-1n-1 b b1 1b b0 0=B=Ba a0 0b b0 0a a1 1b b0 0a an-1n-1b bn-1n-1n n* *n n乘法阵列(阵列乘法器)乘法阵列(阵列乘法器)P = pP = p2n-1 2n-1 p p1 1 p p0 0带符号的并行乘法器带符号的并行乘法器 设设A=aA=an na an-1n-1aa1 1a a0 0和和B=bB=bn nb bn-1n-1bb1 1b b0 0均为用定点表示的均为用定点表示的(n(n1)1)位带符号整
60、位带符号整数。则求数。则求A A* *B B的过程如下:的过程如下: 1 1)将)将A A和和B B的数值位的数值位a an-1n-1aa1 1a a0 0和和b bn-1n-1bb1 1b b0 0输送给输送给n nn n位不带符号的阵列位不带符号的阵列乘法器乘法器, ,并由此产生并由此产生2n2n位真值乘积。位真值乘积。 2 2)将)将A A和和B B的符号位的符号位a an n和和b bn n进行异或作为结果的符号位。进行异或作为结果的符号位。 例例 设设(+15)(+15)1010, ,(-13)(-13)1010, ,用原码阵列乘法器求出乘积用原码阵列乘法器求出乘积?解:输入数据为原
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030家私行业市场深度分析及供需形势与投资价值研究报告
- 新疆职业大学《数据挖掘与统计应用》2023-2024学年第二学期期末试卷
- 邢台市新河县2024-2025学年三下数学期末学业质量监测模拟试题含解析
- 2025至2031年中国秸秆气化机行业投资前景及策略咨询研究报告
- 2025-2030年中国CNG缠绕瓶行业市场投资商机与风险评估报告
- 2025-2030宠物玩具行业竞争格局及“”企业投资战略研究报告
- 2024-2025企业安全培训考试试题附完整答案(考点梳理)
- 2025年职工安全培训考试试题带解析答案
- 2025工厂职工安全培训考试试题【夺冠】
- 2024-2025承包商入厂安全培训考试试题(审定)
- 抢救病人护理书写规范
- (完整版)中医医院医疗设备配置标准(2012年)
- 2025护坡护岸施工及验收规范
- 2025加压水洗法沼气制备生物天然气技术规范
- 《糖尿病酮症酸中毒》课件
- 2024年03月湖南湖南岳阳农商行招考10人笔试历年参考题库附带答案详解
- 湖北武汉武昌区武汉大学附属中学2025届高三第四次模拟考试数学试卷含解析
- 泄漏管理培训课件
- 《ICT测试设备简介》课件
- 2024福建高考政治真题(解析版)
- PE管道井房首部工程施工方案
评论
0/150
提交评论