当前位置:文档之家› 浮点数的加减法运算

浮点数的加减法运算

浮点数的加减法运算
浮点数的加减法运算

计算机组成与结构

浮点数的加减法运算

学生组所在学院:燕山大学信息学院

学生组所在班级:2014级计算机1 班

学生组姓名:陈朝俊张海傅晓欣曲佳彤

地址:中国河北省秦皇岛市河北大街438号邮编:066004

电话:

传真:

网址:

浮点数加减法运算简介

大型计算机和高档微型机中,浮点加减法运算是由硬件完成的。低档的微型机浮点加减法运算是由软件完成的,但不论用硬件实现还是软件实现,基本原理是一致的。

浮点加减法运算要经过对阶、尾数加减运算、结果规格化、舍入处理、溢出判断五步操作。其中尾数运算与定点加减法运算相同,而对阶、规格化、舍入和溢出判断,则是浮点加减法运算和定点加减法运算不同的操作之处。

在补码浮点运算中,阶码与尾数可以都用补码表示。在硬件实现的运算中,阶码和数符常采用双符号位。

浮点数的表示形式

浮点数的表示形式(假设以2为底):

N=M·2E

其中,M为浮点数的尾数,一般为绝对值小于1的规格化二进制小数,用原码或补码形式表示;E为浮点数的阶码,一般是用移码或补码表示的整数。

阶码的底除了2以外,还有用8或16表示的,这里暂且只以2为底进行讨论。

浮点数加减法运算的步骤

设两浮点数X、Y进行加减运算,其中:X=M X·2EX,Y=M Y·2EY 一般由以下五个步骤完成:

一、对阶

1.对阶是指将两个进行运算的浮点数的阶码对齐的操作。对阶的目

的是为了使两个浮点数的尾数能够进行加减运算。因为,当进行MX·2EX 与MY·2EY加减运算时,只有使两浮点数的指数值部分相同,才能将相同的指数值作为公因数提出来,然后进行尾数的加减运算。

2.对阶的具体方法是:首先求出两浮点数阶码的差,即ΔE=Ex-Ey,将小阶码加上ΔE,使之与大阶码相等,同时将小阶码对应的浮点数的尾数右移ΔE位,以保证该浮点数的值不变。

3.几点注意:

(1)对阶的原则是小阶对大阶,因为若大阶对小阶,则尾数的数值部分的高位需移出,而小阶对大阶移出的是尾数的数值部分的低位,这样损失的精度更小。

(2)若ΔE=0,说明两浮点数的阶码已相同,无需再做对阶操作。(3)尾数右移时,对原码表示的尾数,符号位不参加移位,尾数数值部分的高位补0;对补码表示的尾数,符号位参加右移,并保持原符号位不变。

(4)由于尾数右移时是将最低位移出,会损失一定的精度,为减少误差,可先保留若干移出的位,供以后舍入处理用。

二、尾数的加减运算

执行对阶后,两尾数进行加/减运算,得到两数之和/差。

三、结果规格化

1.规格化的目的是使尾数部分的绝对值尽可能以最大值的形式出现。设尾数M的数值部分有n位,规格化数的范围为:1/2≤|[M]原|≤1-2-n,1/2≤[M]补≤1-2-n(当M为正),1/2≤|[M]补|≤1(当M为负)。

2.当运算的结果(和/差)不是规格化数时,需将它转变成规格化数。双符号位的原码规格化尾数,其数值的最高位为1;双符号位的补码规格化尾数,应是00.1XX···X或11.0XX···X(X可为0或1)。

3.规格化操作的规则是:

①如果结果的两个符号位的值不同,表示加减运算尾数结果溢出,此时将尾数结果右移1位,阶码E+1,称为“向右规格化”,简称“右规”。

②如果结果的两个符号位的值相同,表示加减运算尾数结果不溢出。但若最高数值位与符号位相同,此时尾数连续左移,直到最高数值位与符号位的值不同为止;同时从E中减去移位的位数,这称之为“向左规格化”,简称“左规”。

四、舍入处理

1.浮点运算在对阶或右规时,尾数需要右移,被右移出去的位会被丢掉,使运算结果精度受到影响。为减少精度损失,可以将一定位数的移出位先保留起来,称为保护位,在规格化后用于舍入处理。

2.IEEE754标准列出了四种可选的舍入处理方法:

(1)0舍1入:这是标准列出的默认舍入方式,相当于十进制中的“四舍五入”,即当丢失的最高位的值为1时,把这个1加到尾数末位上进行修正(若加1后又使尾数溢出,则再进行一次右规),否则舍去丢失的各位的值。

(2)朝+∞舍入:对正数来说,只要多余位不为全0,则向尾数最低有效位进1;对负数来说,则是简单地舍去。

(3)朝-∞舍入:与朝+∞舍入方法正好相反,对正数来说,只是简单地舍去;对负数来说,只要多余位不为全0,则向尾数最低有效位进1。

(4)朝0舍入:简单地截断舍去,而不管多余位是什么值。这种方法处理简单,但容易形成累积误差。

五、溢出判断

与定点数运算不同的是,浮点数的溢出是以其运算结果的阶

码的值是否产生溢出来判断的。若阶码的值超过了阶码所能表示的最大正数,则为上溢,置溢出标志,若此时浮点数为正数,则为正上溢,记为+∞,若浮点数为负数,则为负上溢,记为-∞;若阶码的值超过了阶码所能表示的最小负数,则为下溢,若此时浮点数为正数,则为正下溢,若浮点数为负数,则为负下溢。正下溢和负下溢都作为0处理(通常将阶码和尾数全部置0)。

要注意的是,浮点数的表示范围和补码表示的定点数的表示范围是有所不同的,定点数的表示范围是连续的,而浮点数的表示范围可能是不连续的。如下图所示。

【例】两浮点数相加,求X+Y。

已知:X=2o1o?0.11011011,Y=21oo?(-0.10101100),求X+Y。解:X和Y在运算器中的浮点补码表示形式为(双符号位):

阶符阶码数符尾数

X:00 010 00 11011011

Y:00 100 11 01010100

(1)对阶

阶差△E=Ex-Ey=[Ex]补+[-Ey]补=00 010+11 100=11 110

即△E为-2,X的阶码小,应使Mx右移2位,保留阶码E=00 100.

[Mx]补=00 00110110 11

其中11表示Mx右移出去而保留的附加位。

(2)尾数相加

[Mx]补0 0 0 0 1 1 0 1 1 0 11

+[MY]补+ 1 1 0 1 0 1 0 1 0 0

─────────────────────

1 1 1 0 0 0 1 0 1 0 11

(3)结果规格化

尾数运算结果的符号位与最高数值位相同,应进行左规处理,结果=11 00010101 10,阶码减一,E= 00 011。

(4)舍入处理

采用0舍1入法处理,保护位最高位为1,在所得结果最低位+1,得[Mx]补=11 00010110,M=-0.11101010.

(5)溢出处理

阶码符号位为00,故不溢出,最终结果为:

X+Y = 2o11?(-0.11101010)

实现浮点运算的加法器逻辑电路原理框图如下图所示。

图中,三个寄存器R0、R1和R2分别存放两个参加运算的浮点

数和结果。第一步对阶,首先由ΔE加法器求出两个浮点数阶码的差值,然后由控制电路控制选择小阶码浮点数的尾数进入右移寄存器进行对阶时的右移,右移结果送入尾数加法器的一个输入端,大阶码浮点数的尾数则直接送入加法器的另一个输入端;第二步尾数相加减;第三步规格化,由尾数加法器产生的结果经规格化部件,一方面送移位寄存器进行尾数移位,另一方面控制选择大阶码进行阶码的增或减操作;第四步由舍入部件对规格化后的尾数进行舍入处理,并将结果送结果寄存器的尾数字段;第五步溢出处理,由溢出判别部件对规格化后的阶码进行溢出判别,若未溢出,则将结果送结果寄存器的阶码部分。

浮点数加法运算

浮点加减运算 对任意一个二进制数N,总可以表示成:N=2E×M ,式中,E为数N的阶码,M称为数N的尾数,一般为绝对值小于1的规格化数(补码是允许为-1)。 两浮点数X,Y进行加减运算时,必须按以下几步执行: ①对阶,使两数的小数点位置对齐,小的阶码向大的阶码看齐。 ②尾数求和,将对阶后的两尾数按定点加减运算规则求和(差)。 ③规格化,为增加有效数字的位数,提高运算精度,必须将求和(差)后的尾数规格化。 ④舍入,为提高精度,要考虑尾数右移时丢失的数值位。 ⑤判断结果,即判断结果是否溢出。 规格化又分左规和右规两种 (1) 左规。当尾数出现00.0××…×或11.1××…×时,需左规。左规时尾数左移一位,阶码减1,直到符合补码规格化表示式为止(2) 右规。当尾数出现01.××…×或10.××…×时,表示尾数溢出,这在定点加减运算中是不允许的,但在浮点运算中这不算溢出,可 通过右规处理。右规时尾数右移一位,阶码加1. 例,两浮点数x=2+010 ×0.110100,y=2+100 ×(-0.101010),求x+y。 解:阶码取3位,尾数取6位(均不包括符号位),机器表示的形式分别为[x]补= 0010 0110100 [y]补= 0100 1010110 ①对阶:先求阶差(两阶码的补码相减) 00 010 + 11 100 (减00 100 就是加—00100的补码,即11 100) 11 110 其真值为-2,即x的阶码比y的阶码小2 [x] 补的阶码增大成0100,尾数右移两位,即[x] 补 = 0100 0001101 ②尾数相加 00.001101 + 11.010110 11.100011 相加结果为0100 1 100011 ③规格化: 最高有效位与符号位相同,需要左规,所以结果应为: [x+y] 补 = 0011 1 000110 x+y = 2+011 ×(-0.111010) 4.舍入 在对阶和右规的过程中,可能会将尾数的低位丢失,引起误差,影响了精度,为此可用舍入法来提高尾数的精度。常用的舍入方法有三种。 (1)截去法。将多余的位截去,剩下的位不变。其最大误差接近于数据最低位上的1。

(精校版)初一数学正负数加减法练习题

(完整word版)初一数学正负数加减法练习题 编辑整理: 尊敬的读者朋友们: 这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望((完整word版)初一数学正负数加减法练习题)的内容能够给您的工作和学习带来便利。同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。 本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为(完整word版)初一数学正负数加减法练习题的全部内容。

初一数学练习题 一、填空 1.a ,b ,c,d 为有理数,a 是绝对值最小的有理数,b 是最小的正整 数,c 的相反数是本身,d 为负数且它的倒数是本身.则a+b+c-d 的值为 2.已知a 是 4 1 的相反数,b 比a 的倒数小2,则a 等于 ,b 等于 3.若x 、y 互为相反数,则3—2011x-2011y= 4.若m 与n 互为相反数,则|m+n-2|= 5.若a 与a+4是互为相反数,则a (a+4)= 6.a+2的相反数是 7.2x+y-z 的相反数是 8.—[—(—2)]= ―27―9 3+(-22) (+18)+(-52) 27+(—6) 37+(-27) [—25]+[-16] 18+(-52) (—9)+(-53) (-16)+(+46) (-65)-29 23+(-32) (-28)+(—34) (+11)+(—13) 10+ (-69) (—58)+74 (—94)+(-49) 67+(-12) (-28)+(-34) 55+(-68) 23+(-73) (-28)+(-13) (-92)+57 (-16)+(-34) (+41)+(-29) 三、有理数乘法计算题 1、(–1.76)–(–19。15)+(–8.24) 2、23–(–17)+(+7)+(–13) 3、(+341)+(–253)+543–(–852) 4、52+112 – (–85 2)

数的定点表示和浮点表示

计算机处理的数值数据多数带有小数,小数点在计算机常有两种表示方法,一种是约定所有数值数据的小数点隐含在某一个固定位置上,称为定点表示法,简称定点数;另一种是小数点位置可以浮动,称为浮点表示法,简称浮点数。 1. 定点数表示法(fixed-point) 所谓定点格式,即约定机器中所有数据的小数点位置是固定不变的。在计算机常采用两种简单的约定:将小数点的位置固定在数据的最高位之前,或者是固定在最低位之后。一般常称前者为定点小数,后者为定点整数。 定点小数是纯小数,约定的小数点位置在符号位之后、有效数值部分最高位之前。若数据x的形式为x=x0.x1x2… xn(其中x0为符号位,x1~xn是数值的有效部分,也称为尾数,x1为最高有效位),则在计算机中的表示形式为: 一般说来,如果最末位xn= 1,前面各位都为0,则数的绝对值最小,即|x|min= 2-n。如果各位均为1,则数的绝对值最大,即|x|max=1-2-n。所以定点小数的表示围是:

2-n≤|x|≤1 -2-n 定点整数是纯整数,约定的小数点位置在有效数值部分最低位之后。若数据x的形式为x=x0x1x2…xn(其中x0为符号位,x1~xn是尾数,xn为最低有效位),则在计算机中的表示形式为: 定点整数的表示围是: 1≤|x|≤2n-1 当数据小于定点数能表示的最小值时,计算机将它们作0处理,称为下溢;大于定点数能表示的最大值时,计算机将无法表示,称为上溢,上溢和下溢统称为溢出。 计算机采用定点数表示时,对于既有整数又有小数的原始数据,需要设定一个比例因子,数据按其缩小成定点小数或扩大成定点整数再参加运算,运算结果,根据比例因子,还原

浮点数的表示和基本运算

浮点数的表示和基本运算 1 浮点数的表示 通常,我们可以用下面的格式来表示浮点数 S P M 其中S是符号位,P是阶码,M是尾数 对于IBM-PC而言,单精度浮点数是32位(即4字节)的,双精度浮点数是64位(即8字节)的。两者的S,P,M所占的位数以及表示方法由下表可知 S P M表示公式偏移量 1823(-1)S*2(P-127)*1.M127 11152(-1)S*2(P-1023)*1.M1023 以单精度浮点数为例,可以得到其二进制的表示格式如下 S(第31位)P(30位到 23位) M(22位到 0位) 其中S是符号位,只有0和1,分别表示正负;P是阶码,通常使用移码表示(移码和补码只有符号位相反,其余都一样。对于正数而言,原码,反码和补码都一样;对于负数而言,补码就是其绝对值的原码全部取反,然后加1.) 为了简单起见,本文都只讨论单精度浮点数,双精度浮点数也是用一样的方式存储和表示的。 2 浮点数的表示约定 单精度浮点数和双精度浮点数都是用IEEE754标准定义的,其中有一些特殊约定。 (1) 当P = 0, M = 0时,表示0。 (2) 当P = 255, M = 0时,表示无穷大,用符号位来确定是正无穷大还是负无穷大。

(3) 当P = 255, M != 0时,表示NaN(Not a Number,不是一个数)。 当我们使用.Net Framework的时候,我们通常会用到下面三个常量 Console.WriteLine(float.MaxValue); // 3.402823E+38 Console.WriteLine(float.MinValue); //-3.402823E+38 Console.WriteLine(float.Epsilon); // 1.401298E-45 //如果我们把它们转换成双精度类型,它们的值如下 Console.WriteLine(Convert.ToDouble(float.MaxValue)); // 3.40282346638529E+38 Console.WriteLine(Convert.ToDouble(float.MinValue)); //-3.40282346638529E+38 Console.WriteLine(Convert.ToDouble(float.Epsilon)); // 1.40129846432482E-45 那么这些值是如何求出来的呢? 根据上面的约定,我们可以知道阶码P的最大值是11111110(这个值是254,因为255用于特殊的约定,那么对于可以精确表示的数来说,254就是最大的阶码了)。尾数的最大值是11111111111111111111111。 那么这个最大值就是:0 11111110 11111111111111111111111。 也就是 2(254-127) * (1.11111111111111111111111)2 = 2127 * (1+1-2-23) = 3.40282346638529E+38 从上面的双精度表示可以看出,两者是一致的。最小的数自然就是- 3.40282346638529E+38。 对于最接近于0的数,根据IEEE754的约定,为了扩大对0值附近数据的表示能力,取阶码P = -126,尾数 M = (0.00000000000000000000001)2 。此时该数的二进制表示为:0 00000000 00000000000000000000001 也就是2-126 * 2-23 = 2-149 = 1.40129846432482E-45。这个数字和上面的Epsilon 是一致的。 如果我们要精确表示最接近于0的数字,它应该是 0 00000001 00000000000000000000000 也就是:2-126 * (1+0) = 1.17549435082229E-38。 3 浮点数的精度问题 浮点数以有限的32bit长度来反映无限的实数集合,因此大多数情况下都是一个近似值。同时,对于浮点数的运算还同时伴有误差扩散现象。特定精度下看似

第三讲:正负数的加减运算律及其乘除法(1)

第三讲:正负数的加减运算律及其乘除法(1) 一、加减法的运算规律 1.1.加法交换律:a b b a +=+;加法结合律:()(),()a b c a b c a b c a b c ++=+++-=+-, 交换律有作用吗?是不是看起来毫无作用?你能设想,当交换律和结合律结合使用时有什么作 用吗?比如这个:3,675 5.86 6.675+-. 1.2.在上面中可以看到,进行加减运算时,运算次序比较随便,只需理解:对于加的、减的,什么时候 加减并不重要,只 要别忘了加减即可. 例1.计算 (1) 3.75 + |-2.25| - ( -435) + ( -432) - ( +851) (2)-1 + {( -2 1) + [31- (41-61)]} 例2.如果|9-m |的相反数是2m-3,求m-10的值.(比较上一讲例1、例3、练5.2) 二、乘除法 1.1.乘法的意义:在第一讲中我们已经学会了自己定义加法。此处依葫芦画瓢,你可以合理定义 乘法吗? 1.2.乘法运算规则:正正相乘,负负相乘;正负相乘 1.3.乘法运算规律:同加法一样:乘法具有交换律与结合律:ab ba =,()()a bc ab c =.除此之外还 有乘法对加法的分配律:()a b c ab ac +=+ 1.4.除法运算规则:就像我们把减法运算转化为加法运算一样,我们也可以把除法运算转化为乘法 运算.你觉得如何转化?倒数的概念.同乘法一样,我们可以分正正相除,负负相除;正负相除等几 种情况. 1.5.除法也有像乘法那样的运算规律吗? 1.6.请你用心体会"加减法互为逆运算,乘除法互为逆运算"的含义. 1.7.乘方:相同的几个数相乘,简写为乘方的形式;n a a n 在中,叫做底数,叫做指数;4 (2)-表示(-2)的4 次方,等于16,而4 2-表示“负的2的4次方”,等于-16,表示一个负数.0的任何正整数次

正数和负数的加法和减法

正数和负数的加法和减法 第一教时 一、教学内容:P34-35例1同号两数相加 二、课时目标:1理解同号两数相加的计算方法 2会正确计算同号两数相加的加法 3知道一个数或负数同零相加,仍得原数 三、教学重难点:同号两数相加的计算方法 四、教学准备: 教学过程: 一复习 1用学具摆出下面各数 +2 +3 +8 —10 —6 2说出下面各数的绝对值 +5 —7 —12 +11 +8 —16 二新授 1揭示课题:正负数的加法 2讨论两个正数相加如(+2)+(+3) (1)用符号表示(2)口答(3)用算式表示,说出结果 (+1)+(+2)=+(1+2)=+3 (+2)+(+3)=+(2+3)=+5 (+6)+(+4)=+(6+4)=+10 (+8)+(+1)=+(8+1)=+9 (+12)+(+8)=+(12+8)=+20 (4)观察两个正数相加的计算方法是怎样的? 归纳:两个正数相加,符号不变,把它们的绝对值相加 3讨论两个负数相加,摆字具 (-3)+(-1)=-(3+1)=4 (-5)+(-2)=-(5+2)=-7 (-6)+(-3)=-(6+3)=-9 (-4)+(-5)=-(4+5)=-9 (-12)+(-13)=-(12+13)=-25 观察讨论:两个负数相加计算方法是怎样的? 归纳:两个负数相加,符号不变,把它们的绝对值相加 师:两个正数相加,它们的和一定是什么数?两个负数相加,它们的和一定是什么数? 4练习:完成书上P35练一练1 5自学例1,完成书上P35练一练2 6讨论:(+6)+0= (-5)+0= 归纳:一个数和零相加,结果仍得这个数 三巩固联系 1填空 (1)(+3)+(+8)=〇(3+8)=(+11 ) (2)(+6)+(+9)=〇()=() (3)(-6)+(-9)=〇()=()

浮点数的表示和运算(范围计算)

浮点数的表示和运算 浮点数的表示和基本运算 1 浮点数的表示 通常,我们可以用下面的格式来表示浮点数 其中S是符号位,P是阶码,M是尾数 对于IBM-PC而言,单精度浮点数是32位(即4字节)的,双精度浮点数是64位(即8字节)的。两者的S,P,M所占的位数以及表示方法由下表可知 以单精度浮点数为例,可以得到其二进制的表示格式如下 其中S是符号位,只有0和1,分别表示正负;P是阶码,通常使用移码表示(移码和补码只有符号位相反,其余都一样。对于正数而言,原码,反码和补码都一样;对于负数而言,补码就是其绝对值的原码全部取反,然后加1.) 为了简单起见,本文都只讨论单精度浮点数,双精度浮点数也是用一样的方式存储和表示的。 2 浮点数的表示约定 单精度浮点数和双精度浮点数都是用IEEE754标准定义的,其中有一些特殊约定。 (1)当P = 0, M = 0时,表示0。 (2)当P = 255, M = 0时,表示无穷大,用符号位来确定是正无穷大还是负无穷大。 (3)当P = 255, M != 0时,表示NaN(Not a Number,不是一个数)。 当我们使用.Net Framework的时候,我们通常会用到下面三个常量 Console.WriteLine(float.MaxValue); // 3.402823E+38 Console.WriteLine(float.MinValue); //-3.402823E+38 Console.WriteLine(float.Epsilon); // 1.401298E-45 //如果我们把它们转换成双精度类型,它们的值如下 Console.WriteLine(Convert.ToDouble(float.MaxValue)); // 3.40282346638529E+38 Console.WriteLine(Convert.ToDouble(float.MinValue)); //-3.40282346638529E+38 Console.WriteLine(Convert.ToDouble(float.Epsilon)); // 1.40129846432482E-45 那么这些值是如何求出来的呢?

正负数的加减运算

正、负数的加减运算 一、知识要点: 1.加法法则:同号两数相加,取的符号,并把绝对值;异号两数相加,绝对值相等时;绝对值不相等时,其和的符号取加数的符号,其和的绝对值为较大的绝对值较小的绝对值; 2.加法运算律: 1.加法交换律: a+b= . 2.加法结合律: (a+b)+c=a+( ). 3.减法法则: 减去一个数,等于加上这个数的 . 4.减法可以转化为进行. 二、经典例题 例1、在数轴上找出表示+3、-2、0、-5、1、+4的点,并分别用A、B、C、D、E、F表示。 例2、在○里填上“>”、“<”或“=”符号。 4.3○-4.3 -9.7○-7.5 0.2○-6.6 -3○0.03 -0.78○7.8 -3.5○-3.50 -100.9○0 5.6○-6.5 例3、计算: (1)(-8)+(-7);(2)(-5.2)+4; (3)(+3.5)+(-4.7) (4)(-3.4)+4.3. 例4、计算:(思考如何计算方便?) (1)16+(-25)+24+(-32); (2)0.125+2.25+(-2.125)+(-0.25).

例5、以知一辆运送货物的卡车从A站出发点,先向东行驶15千米,卸货之后再向西行驶25千米,装上另一批货物,然后又向东行驶20千米后停下来,问卡车最后停在何处.(规定向东行驶为正,向西行驶为负). 例6、计算: (1)(-3)-(-5); (2)7.2-(-4.8); (3)(-3.5)-5.25; (4)0-7. 例7、计算 (1)7.5-3.4+2.9;(2)(-4.7)-(-5.2)+3.6; (3)(-0.8)+(+6.4)-(-5.3);(4)7+(-0.3)-(+7.8)-(-3.6) 例8、杨浦大桥桥面在黄浦江面上方48米,江底在水面下方约10米,桥面与江底相距约多少米?(设水面上方为正)。

浮点数的表示和计算

《计算机组成原理》实验报告

sw $aO, O($fp) #calculate the first nu mber andi $s2, $s0, 0x80000000 # s2 is the sig n srl $s2, $s2, 31 andi $s3, $s0, 0x7f800000 # s3 is the exp onent srl $s3, $s3, 23 andi $s4, $s0, 0x007fffff # s4 is the fractio n addi $s4, $s4, 0x00800000 #calculate the seco nd number andi $s5, $s1, 0x80000000 # s5 is the sig n srl $s5, $s5, 31 andi $s6, $s1, 0x7f800000 # s6 is the exp onent srl $s6, $s6, 23 andi $s7, $s1, 0x007fffff # s7 is the fractio n addi $s7, $s7, 0x00800000 sub $t0, $s3, $s6 bit $t0, 0, sumL1 # add sub bgt $t0, 0, sumL2 # sub add beq $t0, 0, sumL3 2.减法指令如下: mysub: subu $sp, $sp, 32 sw $ra, 20($sp) sw $fp, 16($sp) addiu $fp, $sp, 28 sw $a0, 0($fp) #calculate the first nu mber andi $s2, $s0, 0x80000000 # s2 is the sig n srl $s2, $s2, 31 andi $s3, $s0, 0x7f800000 # s3 is the exp onent srl $s3, $s3, 23 andi $s4, $s0, 0x007fffff # s4 is the fractio n addi $s4, $s4, 0x00800000 #calculate the seco nd number xori $s5, $s1, 0x80000000 # s5 is the sig n srl $s5, $s5, 31 andi $s6, $s1, 0x7f800000 # s6 is the exp onent srl $s6, $s6, 23 andi $s7, $s1, 0x007fffff # s7 is the fractio n addi $s7, $s7, 0x00800000 sub $t0, $s3, $s6 blt $t0, 0, subL1 # +,- bgt $t0, 0, subL2 # -,+ beq $t0, 0, subL3 # +,+ or -,- 3.乘法指令如下: mutilStart: srl $t2, $s0, 31 srl $t3, $s1, 31 sll $t4, $s0, 1

浮点数表示方法与运算

在计算机系统的发展过程中,曾经提出过多种方法表达实数,典型的比如定点数。在定点数表达方式中,小数点位置固定,而计算机字长有限,所以定点数无法表达很大和很小的实数。最终,计算机科学发展出了表达范围更大的表达方式——浮点数,浮点数也是对实数的一种近似表达。 1.浮点数表达方式 我们知道任何一个R 进制数N 均可用下面的形式表示:N R =±S ×R ±e 其中,S—尾数,代表N 的有效数字; R—基值,通常取2、8、16;e—阶码,代表N 的小数点的实际位置(相当于数学中的指数)。 比如一个十进制数的浮点表达1.2345×102,其中1.2345为尾数,10为基数,2为阶码。一个二进制数的浮点表达0.001001×25,0.001001为尾数,2为基数,5为阶码;同时0.001001×25也可以表示成0.100100×23,0.100100为尾数,2为基数,3为阶码。浮点数就是利用阶码e 的变化达到浮动小数点的效果,从而灵活地表达更大范围的实数。 2.浮点数的规格化 一个数用浮点表示时,存在两个问题:一是如何尽可能多得保留有效数字;二是如何保证浮点表示的唯一。 对于数0.001001×25,可以表示成0.100100×23、0.00001001×27等等,所以对于同一个数,浮点有多种表示(也就是不能唯一表示)。另外,如果规定尾数的位数为6位,则0.00001001×27会丢掉有效数字,变成0.000010×27。因此在计算机中,浮点数通常采用规格化表示方法。 当浮点数的基数R 为2,即采用二进制数时,规格化尾数的定义为:1/2<=|S|<1。若尾数采用原码(1位符号位+n 位数值)表示,[S]原=S f S 1S 2S 3…S n (S f 为符号位的数符),则满足S 1=1的数称为规格化数。即当尾数的最高有效位S 1=1,[S]原=S f 1S 2S 3…S n ,表示该浮点数为规格化数。对0.001001×25进行规格化后,表示为0.100100×23。 3.浮点数的表示范围 求浮点数的表示范围,实质是求浮点数所能表示的最小负数、最大负数、最小正数和最大正数。

浮点数加减运算课件

如果一个二进制浮点数的尾数的绝对值小于1并且大于等于0.5,(1>|尾数|≥0.5),那么这个二进制浮点数就是一个规格化的浮点数。 用二进制补码表示1个规格化的浮点数,并且规格化的浮点数的尾数只有一个符号位时: 规格化的浮点数的尾数是正数时应该是0 . 1 X X X X X X X X X ……的形式 (0表示符号位,X表示0或1中的任意一个数值) 规格化的浮点数的尾数是负数时应该是1 . 0 X X X X X X X X X ……的形式 (1表示符号位,X表示0或1中的任意一个数值) 用二进制补码表示1个规格化的浮点数,并且规格化的浮点数的尾数只有两个符号位时: 规格化的浮点数的尾数是正数时应该是00 . 1 X X X X X X X X X ……的形式 (00表示符号位,X表示0或1中的任意一个数值) 规格化的浮点数的尾数是负数时应该是11 . 0 X X X X X X X X X ……的形式 (11表示符号位,X表示0或1中的任意一个数值) 两个浮点数加减法的计算结果必须规格化,如果不是规格化的数,则要通过修改阶码并同时左移或者右移尾数,使其变为规格化的数。 [例] x=2010×0.11011011,y=2100×-0.10101100,浮点数均以补码表示,阶码采用双符号位,尾数采用单符号位。求x+y 。 答: (步骤1)转换成题目中要求的浮点数格式: 浮点数x=2010×0.11011011的阶码是+010,尾数是+0.11011011 浮点数均以补码表示,所以阶码以补码表示,并且阶码采用双符号位, [x]浮的阶码=00010(00是两个符号位) 浮点数均以补码表示,所以尾数以补码表示,并且尾数采用单符号位, [x]浮的尾数=0.11011011(0是1个符号位)

浮点数的加减乘除运算步骤

设两个浮点数X=Mx※2Ex Y=My※2Ey 实现X±Y要用如下5步完成: ①对阶操作:小阶向大阶看齐 ②进行尾数加减运算 ③规格化处理:尾数进行运算的结果必须变成规格化的浮点数,对于双符号位的补码尾数来说,就必须是001×××…×× 或110×××…××的形式, 若不符合上述形式要进行左规或右规处理。 ④舍入操作:在执行对阶或右规操作时常用“0”舍“1”入法将右移出去的尾数数值进行舍入,以确保精度。 ⑤判结果的正确性:即阶码是否溢出 若阶码下溢(移码表示是00…0),要置结果为机器0; 若阶码上溢(超过了阶码表示的最大值)置溢出标志。 例题:假定X=0 .0110011*211,Y=0.1101101*2-10(此处的数均为二进制)?? 计算X+Y;解:[X]浮:0 1010 1100110 [Y]浮:0 0110 1101101 符号位阶码尾数 第一步:求阶差:│ΔE│=|1010-0110|=0100 第二步:对阶:Y的阶码小,Y的尾数右移4位 [Y]浮变为0 1010 0000110 1101暂时保存 第三步:尾数相加,采用双符号位的补码运算 00 1100110 +00 0000110 00 1101100 第四步:规格化:满足规格化要求 第五步:舍入处理,采用0舍1入法处理 故最终运算结果的浮点数格式为:0 1010 1101101, 即X+Y=+0. 1101101*210

①阶码运算:阶码求和(乘法)或阶码求差(除法) 即[Ex+Ey]移= [Ex]移+ [Ey]补 [Ex-Ey]移= [Ex]移+ [-Ey]补 ②浮点数的尾数处理:浮点数中尾数乘除法运算结果要进行舍入处理 例题:X=0 .0110011*211,Y=0.1101101*2-10 求X※Y 解:[X]浮:0 1 010 ******* [Y]浮:0 0 110 1101101 第一步:阶码相加 [Ex+Ey]移=[Ex]移+[Ey]补=1 010+1 110=1 000 1 000为移码表示的0 第二步:原码尾数相乘的结果为: 0 10101101101110 第三步:规格化处理:已满足规格化要求,不需左规,尾数不变,阶码不变。第四步:舍入处理:按舍入规则,加1进行修正 所以X※Y= 0.1010111※2+000

浮点数计算方式

2.3.4二进制转10进制及10进制转为二进制 【例2-3-4】 把二进制110.11转换成十进制数,及十进制转为二进制。 解: (110.11)2 =1×22+1×21+1×20+1×2-1+1×2-2 =4+2+0+0.5+0.25=(6.75)10 把十进制转换为二进制 解: 2 6 0 2 3 1 1 1 所以实数部分为110 0.75×(2×2-1)=0.75×2×2-1 =1×2-1+0.5×2-1 =1×2-1+1×2-2 所以结果为:(110.11)2 2.3.5 浮点数在计算机中存储形式 当前主流微机中广泛采用的IEEE754标准浮点格式。 按IEEE754标准,常用的浮点数(32位短实数)的格式如图2-3所示。

IEEE754标准浮点格式 N=2e.M (M为浮点尾数,为纯小数,e为浮点数的指数(阶码))尾数部分决定了浮点数的精度,阶码决定了表示范围32为浮点数(IEEE754标准格式0—22为尾数M,23-30为阶码E,31为符号位S),阶码用移码表示。阶码E=指数真值e+127 规格化真值x=(-1)^S*(1.M)*2^(E-127) 将(82.25)10 转换成短浮点数格式。 1)先将(82.25)10 转换成二进制数 (82.25)10 =(1010010.01)2 2)规格化二进制数(1010010.01)2 1010010.01=1.01001001×2 6 尾数M=01001001 3)计算移码表示的阶码=偏置值+阶码真值: E=127+6=133=10000101 4)以短浮点数格式存储该数 因此:符号位=0 S=0表示该数为正数 阶码=10000101 由3)可得 尾数=01001001000000000000000 由2)可得;尾数为23位, 不足在后面添15位0 所以,短浮点数代码为: 0;10000101;01001001000000000000000 表示为十六进制代码为:42A48000H

数的定点表示和浮点表示

计算机处理的数值数据多数带有小数,小数点在计算机中通常有两种表示方法,一种是约定所有数值数据的小数点隐含在某一个固定位置上,称为定点表示法,简称定点数;另一种是小数点位置可以浮动,称为浮点表示法,简称浮点数。 1. 定点数表示法(fixed-point) 所谓定点格式,即约定机器中所有数据的小数点位置是固定不变的。在计算机中通常采用两种简单的约定:将小数点的位置固定在数据的最高位之前,或者是固定在最低位之后。一般常称前者为定点小数,后者为定点整数。 定点小数是纯小数,约定的小数点位置在符号位之后、有效数值部分最高位之前。若数据x的形式为x=x0.x1x2… xn(其中x0为符号位,x1~xn是数值的有效部分,也称为尾数,x1为最高有效位),则在计算机中的表示形式为: 一般说来,如果最末位xn= 1,前面各位都为0,则数的绝对值最小,即|x|min= 2-n。如果各位均为1,则数的绝对值最大,即|x|max=1-2-n。所以定点小数的表示范围是:

2-n≤|x|≤1 -2-n 定点整数是纯整数,约定的小数点位置在有效数值部分最低位之后。若数据x的形式为x=x0x1x2…xn(其中x0为符号位,x1~xn是尾数,xn为最低有效位),则在计算机中的表示形式为: 定点整数的表示范围是: 1≤|x|≤2n-1 当数据小于定点数能表示的最小值时,计算机将它们作0处理,称为下溢;大于定点数能表示的最大值时,计算机将无法表示,称为上溢,上溢和下溢统称为溢出。 计算机采用定点数表示时,对于既有整数又有小数的原始数据,需要设定一个比例因子,数据按其缩小成定点小数或扩大成定点整数再参加运算,运算结果,根据比例因子,还原

初中数学正负数的加减乘除运算练习题

一、100道加减乘除运算题。 1、(-21)+(+3 1); 2、(-3)+(+0.99) 3、(-5)+(-8)-(-10); 4、(-2.5)+(+2 5) 5、(-23 1)+(-34 1)-(-23 1); 6、(-18)+(+15)+(-21)+(+20) 7、(-112 1)+(+233 1)+(+212 1)+(-343 1)+(-27) 8、1+(-2)+3+(-4)+5+……+(-1998)+1999; 9、2.1-+1.3--8.4+; 10、(-318 1 )+(+55 125)+(-3124 19 ) 11、(-0.1)+(-831)+(-232)+(+4.4);12、0.25+(-41)+(-381)+54 3 13、(+1341)+(-5561)+(+743)+(-146 5 )+(+11.7); 14、(+66)+(-12)+(+11.3)+(-7.4)+(+8.1); 15、(-1249)+(-851)+(+379)+(-179)+(-316); 16、(-18.75)+(+6.25)+(-3.35)+(+18.75) 17、(-43 2 )+(-331)+(+621)+(-241 ) 18、(-0.5)+(+341)+(+2.75)+(-52 1 ) 19、(+387)+(-143)+(-387)+(+143)+(-621 ); 20、(-421)+[(+75)+(-0.5)+(+172 )]; 21、(-941)+(-3672)+(1+94 1 ); 22、(-384)+926+(-16)+74; 23、(-8.25)+(-1754)+(+100)+(+7.8)+(+4 1 ); 30、(-12.78)+(-6.73)+(+8.62)+(+4.73);

单片机浮点数计算

在单片机应用系统的数据处理过程中,经常会遇到小数的运算问题,如求解BCD的增量算式、线性化处理等。因此,需要用二进制数来表示小数。表示小数的方法一般有两种,定点数和浮点数。定点数结构简单,与整数的运算过程相同,运算速度快。但随着所表示数的范围的扩大,其位数成倍增加,给运算和存储带来不便,而且也不能保证相对精度不变。浮点数的结构相对复杂,但它能够以固定的字节长度保持相对精度不变,用较少的字节表示很大的数的范围,便于存储和运算,在处理的数据范围较大和要求精度较高时,采用浮点数。 浮点数的概念 常用的科学计数法来表示一个十进制数如 l234.75=1.23475E3=1.23475×103 在数据很大或很小时,采用科学计数避免了在有效数字前加0来确定小数点的位置,突出了数据的有效数字的位数,简化了数据的表示。可以认为,科学计数法就是十进制数的浮点数表示方法。 在二进制效中,也可以用类似的方法来表示一个数,如 1234.75=10011010010.11(二进制)=0.1001101001011×211 一般表达式为 N=S×2p 在这种表示方法中,数值由四个部分组成,即尾数S及符号,阶码P及符号。 在二进制中,通过定义相应字节或位来表示这四部分,就形成了二进制浮点数。二进制浮点数可以有多种不同的表示方法,下面是一种常见的三字节浮点数的格式: 其中尾数占16位,阶码占6位,阶符占1位,数符占1位。阶码通常用补码来表示。 在这种表示方法中,小数点的实际位置要由阶码来确定,而阶码又是可变的,因此称为浮点数。 1234.75用这种格式的浮点数表示就是: 0000 1011 1001 1010 0101 1000 用十六进制表示为 1234.75=0B9A58H -1234.75=4B9A58H 0.171875=043B00H -0.171875=443B00H 三字节浮点数所能表示的最大值为 1×263=9.22×1018 能表示的最小数的绝对值为 0.5×2-63=5.42×10-20 其所表示的数的绝对值范围=(5.42×10-20~9.22×1018),由此可以看到,比三字节定点数表示的数的范围大得多。 按同样方法可以定义一个四字节的浮点数,以满足更高精度的需要。 规格化浮点数 同一个数用浮点数表示可以是不同的,如 1234.75=0B9A58H=0C4D2CH=0D2696H 虽然这几种表示其数值是相同的,但其尾数的有效数字的位数不同,分别为16位、15位和14位。在运算过程中,为了最大限度地保持运算精度,应尽量增加尾数的有效位数。这就需要对浮点数进行规格化处理。 在只考虑用二进制原码表示尾数时,尾数的最高位为l,则该浮点数为规格化浮点数。在规格化浮点数中,用尾数为0和最小阶码表示0,三字节规格化浮点数的0表示为410000H。 浮点数在运算之前和运算之后都要进行规格化,规格化过程包括以下步骤: (1)首先判断尾是否为0,如果为0,规格化结果为410000H; (2)如果尾数不为0,判断层数的最高位是否为1,如果不为1,尾数左移,阶码减1; (3)再判断层数的最高位是否为1,如果不为1,继续进行规格化操作,如果为1,则规格化结束。 浮点数运算

关于正负数的加减分类练习题

关于正负数的加减分类练习题 一、绝对值概念: 一个数值a去掉符号,留下的纯数字(正),就是他的绝对值;表示为|a|。如数值的正负能确定,绝对值的表示要用 (±)数值表示。 例:|4|=4 |-4|=4 |a|=|a|(不知其正负) a>0 |a|=a a<0 |a|=-a, a=0 |a|=a 二、相反数概念:绝对值相同,符号相反的两个数值如a和-a。 例: [4,-4 ] [ a ,-a] [-23,23] 三、计算,一般三个以上的数加减练习要列递等式,熟练后可直接计算 1.合并整理符号,两个连续符号,同号(++、--)改为"+"(减负=加正), 异号(+-、-+)改为"-",两个绝对值间只留一个符号,且全部看成带符号的数相加 例: -20+(-34)-(-56)-(+27)=-20-34+56-27 看成(-20)加(-34)加(+56)加(-27) 练习 20-(-34)+(-56)-(+27)= 81+(-34)-(-56)-(+12)= 20-(-15)-(-47)-(+27)= -20+(-34)-(-56)-(+27)= -60+(-27)-(-56)-(+27)= -20+(-34)+(-56)-(-27)= a+(-b)-c-(-d)= -2.5-(-9)+(-6.7)= 2.同一级运算中,两个完全相反数相加为0(抵销) 例:67+34+56-34=67 +34 +56 -34 =67+56=123 练习: 5-5.6+5.5+345-145+0.6-5.5= 67-27+15+25-40-15+27= a+b+c-d+(-a)-b+d=

3.两符号相同数相加:同为正的直接相加,同为负绝对值相加再加“-”符号, 也可以先各求正数的和再加上各负数的和 例:-21-34=-(21+34) 55+345=直接相加 12-6-4+8=(12+8)-(6+4) 练习: -45-67= -1-2-3-7= -14-34-6-16= 24+12-6-18= 4. 两符号相反数相加:能够看成减法的直接相减,否则用绝对值之差,加绝对 值大的符号; 例:67-21=直接相减 -34+21 =-(34-21) =-13 练习 45-37= 21-78= -30+40= 120-129= 1-2+5-6+17-19= -54+44 5.只有加减,可以根据需要带着符号移动,或先求部分结果,简化运算。特别 要注意,移动、运算都一定要带着符号。(加法交换结合律)。 例:123-56 +38 +62 -38 -44 =123-56 +38 +62 -38 -44 =123-56-44+62 =123-(56+44)+62 =123-100+62 =95 练习: 23-56 +38 +77 +62 -44 15-56 +21 +79 +45 -14 25 +39 -56 +11+75 -14

七年级正负数的加减

个性化教学辅导案 学科数学任课教师:授课时间:年月日(星期) 姓名年级性别总课时____第___课 教学 目标 难点 重点 课 堂 教 学过程课前 检查 作业完成情况:优□良□中□差□建议__________________________________________ 过 程 数学:1.1正数负数练习题1 一﹑选择题 (共10个小题,每小题3分,共30分) 1. #李华把向北移动记作“+”,向南移动记作“—”,下列说法正确的是() A. —5米表示向北移动了5米 B. +5米表示向南移动了5米 C. 向北移动—5米表示向南移动5米 D. 向南移动5米,也可记作向南移动—5米 2. 下列有正数和负数表示相反意义的量,其中正确的是() A. 一天凌晨的气温是—50C,中午比凌晨上升100C,所以中午的气温是+100C B. 如果生产成本增加12%,记作+12%,那么—12%表示生产成本降低12% C. 如果+5.2米表示比海平面高5.2米,那么—6米表示比海平面低—6米 D. 如果收入增加10元记作+10元,那么—8表示支出减少8元 3. 下列说法错误的是() A. 有理数是指整数、分数、正有理数、零、负有理数这五类数 B. 一个有理数不是整数就是分数 C. 正有理数分为正整数和正分数 D. 负整数、负分数统称为负有理数 4.如图所示的图形为四位同学画的数轴,其中正确的是()

5.如图所示,点M 表示的数是( ) A. 2.5 B. 5.3- C. -25 . D. 2.5 6. *6,2008,212,0,-3,+1,4 1 -中,正整数和负分数共有( ) A. 3个 B. 4个 C. 5个 D. 6个 7. 若字母a 表示任意一个数,则—a 表示的数是( ) A. 正数 B. 负数 C. 0 D. 以上情况都有可能 8.点A 为数轴上表示-2的动点,当点A 沿数轴移动4个单位长到B 时,点B 所表示的实数是 ( ) A 1 B -6 C 2或-6 D 不同于以上答案 9.#下列说法正确的是( ) A .数轴上一个点可以表示两个不同的有理数 B .表示-P 的点一定在原点的左边 C .在数轴上表示-8的点与表示+2的点的距离是6 D .数轴上表示-8 3 5 的点,在原点左边8 3 5 个单位 10. #小明设计了一个游戏规则:先向南走5米,再向南走—10米,最后向北走5米,则结果是( ) A. 向南走10米 B. 向北走5米 C. 回到原地 D. 向北走10米 第Ⅱ卷(非选择题) 一、填空题(共8个小题,每小题3分,共24) 11.数轴上离表示-3的点的距离等于3个单位长度的点表示数是 . 12.有理数中最小的非负数 .最大的非正数是 .

浮点数的加减法运算

计算机组成与结构 之 浮点数的加减法运算 学生组所在学院:燕山大学信息学院 学生组所在班级:2014级计算机1 班 学生组姓名:陈朝俊张海傅晓欣曲佳彤

地址:中国河北省秦皇岛市河北大街438号邮编:066004 电话: 传真: 网址:

浮点数加减法运算简介 大型计算机和高档微型机中,浮点加减法运算是由硬件完成的。低档的微型机浮点加减法运算是由软件完成的,但不论用硬件实现还是软件实现,基本原理是一致的。 浮点加减法运算要经过对阶、尾数加减运算、结果规格化、舍入处理、溢出判断五步操作。其中尾数运算与定点加减法运算相同,而对阶、规格化、舍入和溢出判断,则是浮点加减法运算和定点加减法运算不同的操作之处。 在补码浮点运算中,阶码与尾数可以都用补码表示。在硬件实现的运算中,阶码和数符常采用双符号位。 浮点数的表示形式 浮点数的表示形式(假设以2为底): N=M·2E 其中,M为浮点数的尾数,一般为绝对值小于1的规格化二进制小数,用原码或补码形式表示;E为浮点数的阶码,一般是用移码或补码表示的整数。 阶码的底除了2以外,还有用8或16表示的,这里暂且只以2为底进行讨论。

浮点数加减法运算的步骤 设两浮点数X、Y进行加减运算,其中:X=M X·2EX,Y=M Y·2EY 一般由以下五个步骤完成:

规 格 化 浮 点 数 加 减 运 算 流 程 一、对阶 1.对阶是指将两个进行运算的浮点数的阶码对齐的操作。对阶的目

的是为了使两个浮点数的尾数能够进行加减运算。因为,当进行MX·2EX 与MY·2EY加减运算时,只有使两浮点数的指数值部分相同,才能将相同的指数值作为公因数提出来,然后进行尾数的加减运算。 2.对阶的具体方法是:首先求出两浮点数阶码的差,即ΔE=Ex-Ey,将小阶码加上ΔE,使之与大阶码相等,同时将小阶码对应的浮点数的尾数右移ΔE位,以保证该浮点数的值不变。 3.几点注意: (1)对阶的原则是小阶对大阶,因为若大阶对小阶,则尾数的数值部分的高位需移出,而小阶对大阶移出的是尾数的数值部分的低位,这样损失的精度更小。 (2)若ΔE=0,说明两浮点数的阶码已相同,无需再做对阶操作。(3)尾数右移时,对原码表示的尾数,符号位不参加移位,尾数数值部分的高位补0;对补码表示的尾数,符号位参加右移,并保持原符号位不变。 (4)由于尾数右移时是将最低位移出,会损失一定的精度,为减少误差,可先保留若干移出的位,供以后舍入处理用。 二、尾数的加减运算

相关主题
文本预览
相关文档 最新文档