第二章 浮点数的表达与运算

合集下载

浮点数的运算方法

浮点数的运算方法

浮点数的运算方法浮点数是计算机中一种表示实数的数据类型,其特点是可以表示带有小数部分的数字。

在进行浮点数的运算时,需要考虑到浮点数的精度问题、舍入误差以及运算顺序等因素。

浮点数的表示方法为:±m×be,其中m为尾数(即小数部分的数值),b为基数或底数,e为指数(表示位移的量)。

1.浮点数加法运算:-对两个浮点数的指数进行比较,将较小指数的浮点数的尾数左移指数之差的位数,使两个浮点数的小数点对齐。

-对齐后的尾数相加,得到一个和。

-对和进行规格化,即将结果的尾数进行处理,使其满足指定的位数限制。

-对规格化后的结果进行舍入运算,得到最终结果。

2.浮点数减法运算:-先将减数的指数调整与被减数的指数相等。

-对齐后的尾数相减,得到一个差。

-对差进行规格化和舍入运算,得到最终结果。

3.浮点数乘法运算:-将两个浮点数的指数相加,得到加法的和,并相应地调整两个浮点数的尾数。

-尾数相乘,得到一个乘积。

-对乘积进行规格化和舍入运算,得到最终结果。

4.浮点数除法运算:-将被除数的指数减去除数的指数,得到差,并相应地调整两个浮点数的尾数。

-尾数相除,得到一个商。

-对商进行规格化和舍入运算,得到最终结果。

在进行浮点数运算时需要注意一些问题:-浮点数的精度问题:由于浮点数的尾数有限位数,所以会存在精度丢失的问题。

这就意味着进行浮点数运算时,可能会出现舍入误差,导致结果有微小的偏差。

-运算顺序:浮点数的运算顺序可能会影响最终结果。

在连续进行多次浮点数运算时,可能会得到不同的结果。

这是因为浮点数的运算不满足交换律和结合律。

因此,在编程中需要谨慎选择运算顺序,以避免结果的不确定性。

-溢出和下溢问题:由于浮点数的范围限制,可能会出现溢出(结果超出浮点数的表示范围)或下溢(结果过小,无法表示)的情况。

针对这些情况,需要进行特殊处理,如返回特定的错误码或进行科学计数法表示。

在实际编程中,可以使用编程语言提供的浮点数运算库或内置函数来进行浮点数运算,以确保运算结果的准确性和可靠性。

浮点数的表示方法

浮点数的表示方法

浮点数的表示方法
一、浮点数表示
一个数的浮点形式(设基数是2)可写成:
N = M × 2E
其中:M代表尾数,E代表阶码。

计算机中浮点数只用尾数和阶码表示,其形式如下:
浮点数的精度由尾数决定,数的表示范围由阶码的位数决定。

为了最大限度提高精度,尾数采用规格化形式,既1/2≤M<1。

采用二进制表示时,若尾数大于零,则规格化数应该是01XXXX的形式;若尾数小于零,则规格化数应为10XXXX的形式。

二、机器零
当浮点数的尾数为0或阶码为最小值时,计算机通常把该数当作零,因此程序中进行浮点运算时,判断某数是否为零,通常可以用小于某个极小值来代替。

三、实例
【例1】设X=0.0110×23 ,用补码、浮点数形式表示阶码为X j=011,尾数为00110,这时由于X 尾数不符合01XXXX的形式,因此不是规格化数,必须先进行规格化处理。

方法:若尾数小于1/2,把尾数左移一位(不包括符号位),观察结果是否满足规格化条件,满足则在把阶码减1即可,否则继续左移和调整阶码;若尾数大于1,则把尾数右移一位(不包括符号位),观察结果是否满足规格化条件,满足则在把阶码加1即可,否则继续右移和调整阶码。

上例中,00110左移一位为01100,符合规则化标准,此时阶码减1,为010即得到浮点表示形式。

这个数具体在计算机中如何表示要看计算机中规定的阶码和尾数的位数,若阶码和尾数均为16位,则上面的数X在计算机内部表示就是00000000000000100110000000000000 ,不足
均用零填充。

计算机组成原理:浮点数表示及运算

计算机组成原理:浮点数表示及运算
正数 0.1xxxxxx 负数 1.1xxxxxx 补码尾数的规格化的表现形式:尾数的最高位与符号位相反。 正数 0.1xxxxxx 负数 1.0xxxxxx
6
计算机组成原理
例:对数据12310作规格化浮点数的编码,假定1位符号位,基 数为2,阶码5位,采用移码,尾数10位,采用补码。
解:12310=11110112= 0.11110110002×27 [7]移=10000+00111 = 10111 [0.1111011000]补=0.1111011000 [123]浮= 1011 1 0 11 1101 1000 = BBD8H
对阶: [△E]补= [ Ex]补-[Ey]补=00 10+ 11 11= 00 01
y向x对齐,将y的尾数右移一位,阶码加1。 [y]补=00 10,00.0101 求和: 00.1101 + 00.0101 01.0010 [x+y]补=00 10,01.0010 右归:运算结果两符号位不同,其绝对值大于1,右归。 [x+y]补= 00 11,00.1001
0.0000001 --- 0.1111111 1/128 --- 127/128 可表示2-11*0.0001 --- 211*0.1111

设阶码2位,尾数4位

0.0000001 --- 111.1
可表示2-111*0.001 --- 2111*0.111

设阶码3位,尾数3位

0.0000000001 --- 1110000
19
(4) 结果规格化 求和之后得到的数可能不是规格化了的数 , 为了增加有效数 字的位数, 提高运算精度,必须将求和的结果规格化。 ①规格化的定义:

浮点数表示方法与运算

浮点数表示方法与运算

在计算机系统的发展过程中,曾经提出过多种方法表达实数,典型的比如定点数。

在定点数表达方式中,小数点位置固定,而计算机字长有限,所以定点数无法表达很大和很小的实数。

最终,计算机科学发展出了表达范围更大的表达方式——浮点数,浮点数也是对实数的一种近似表达。

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的数称为规格化数。

浮点数的运算方法

浮点数的运算方法

浮点数的运算方法浮点数是计算机中用于表示实数的一种数据类型,由于实数是无限的,而计算机只能存储有限的信息,所以必然存在精度误差。

浮点数的运算涉及到加法、减法、乘法和除法等基本运算,以及开方、幂函数等高级运算。

1.加法运算:浮点数相加时,先将较小的浮点数调整为与较大的浮点数相同的指数,然后进行尾数的相加,最后对结果进行规格化处理,即进行舍入操作,得到最终的结果。

2.减法运算:浮点数相减的原理与加法相同,只是在相减之前,需要将两个浮点数的指数调整为相等,然后进行尾数的相减操作,最后同样需要对结果进行规格化处理。

3.乘法运算:浮点数相乘时,将两个浮点数的指数相加,然后将尾数相乘得到结果的尾数部分,最后对结果进行规格化处理。

4.除法运算:浮点数除法的原理与乘法类似,先将两个浮点数的指数相减,然后将尾数相除得到结果的尾数部分,最后同样需要进行规格化处理。

5.开方运算:浮点数的开方运算是通过求解多项式的根来实现的,常用的方法有牛顿法、二分法和二次近似法等。

这些方法都是通过迭代的方式,逐步逼近平方根的值,直到达到所需的精度。

6.幂函数运算:浮点数的幂函数运算可以通过连乘或连乘的方式实现。

幂函数运算的精度取决于底数和指数的精度以及所需的结果精度。

在浮点数的运算过程中,需要注意以下几个常见问题:1.精度丢失:浮点数的表示是有限的,不可避免地存在精度误差,特别是在进行连续的浮点数运算时,会导致误差累积,可能导致结果的不准确。

2.舍入误差:浮点数的结果需要进行舍入操作以保持一定的精度。

舍入规则有多种,如四舍五入、向上取整、向下取整等,选择合适的舍入规则可以减小误差。

3.溢出和下溢:浮点数的范围是有限的,当计算结果超出范围时,会发生溢出;当结果接近零但无法表示时,会发生下溢。

这两种情况都需要进行特殊处理。

4. 特殊数值:浮点数中有几个特殊的数值,如无穷大(Infinity)、非数值(NaN)和零(0)。

这些特殊值的运算需要按照特定的规则进行处理,以免引起错误。

浮点数表示及运算

浮点数表示及运算

计算机组成原理
15
完成浮点加减运算的操作过程大体分为: (1) 0 操作数的检查;
(2) 比较阶码大小并完成对阶; (3) 尾数进行加或减运算; (4) 结果规格化。 (5) 舍入处理。 (6) 溢出处理。
计算机组成原理
16
(1) 0 操作数检查 (2) 对阶
使二数阶码相同(即小数点位置对齐),这个过程叫作对阶。 • 先求两数阶码 Ex 和 Ey之差,即△E = Ex-Ey 若△E = 0,表示 Ex=Ey 若△E > 0, Ex>Ey 若△E < 0, Ex<Ey 通过尾数的移动来改变Ex或Ey,使其相等。
19
(4) 结果规格化 求和之后得到的数可能不是规格化了的数, 为了增加有效数 字的位数, 提高运算精度,必须将求和的结果规格化。 ①规格化的定义:
采用原码: 正数: S=0.1 ×××…× 负数: S=1.1 ×××…× 采用双符号位的补码:
对正数: 对负数:
1 S 1 2
(二进制)
S=00.1×××…× S=11.0×××…×
格式 单精度 最小值 Emin=1, M=0, 1-127 -126 1.0×2 =2 最大值 Emax=254, 254-127 f=1.1111…, 1.111…1×2 127 -23 = 2 ×(2-2 ) Emax=2046, 2046-1023 f=1.1111…,1.111…1×2 1023 -52 =2 ×(2-2 )
8位定点小数可表示的范围


0.0000001 --- 0.1111111 1/128 --- 127/128 可表示2-11*0.0001 --- 211*0.1111

设阶码2位,尾数4位

计算机组成原理:浮点数表示及运算(方案).ppt

计算机组成原理:浮点数表示及运算(方案).ppt
计算机组成原理
浮点数表示及运算
计算机组成原理
1
一、浮点数的表示
9×10-28 = 0.9 ×10-27 2×1033 = 0.2 ×1034
任意一个十进制数 N 可以写成
N=10E·×M (十进制表示)
计算机中一个任意进制数 N 可以写成
N=Re×m = 2E×M = 2±e× (±m)
m :尾数,是一个纯小数。 e :浮点的指数, 是一个整数。
浮点数的表示范围 负下溢 正下溢
负上溢
正上溢
-

负数 最
0
正数


+












N=2E×M
|N|→∞ 产生正上溢或者负上溢
|N|→0 产生正下溢或者负下溢
计算机组成原理
3
机器字长一定时,阶码越长,表示范围越大,精度越低 浮点数表示范围比定点数大,精度高
8位定点小数可表示的范围
0.0000001 --- 0.1111111
1/128 --- 127/128
设阶码2位,尾数4位 可表示2-11*0.0001 --- 211*0.1111
0.0000001 --- 111.1
设阶码3位,尾数3位 可表示2-111*0.001 --- 2111*0.111
0.0000000001 --- 1110000
= BBD8H
计算机组成原理
7
三 、浮点数的标准格式IEEE754
为便于软件移植,使用 IEEE(电气和电子工程师协会)标准IEEE754 标 准:尾数用原码;阶码用“移码”;基为2。

计算机组成原理第12-浮点数的运算2

计算机组成原理第12-浮点数的运算2
Tk=k+(n-1) 其中k个时钟周期用于处理第一个任务。k个周期后,流水线被装满,剩余的n-1个 任务只需n-1个周期就完成了。 用非流水线的硬件来处理这n个任务,时间上只能串行进行,则所需时钟周期数为 TL=n·k 将TL和Tk的比值定义为k级线性流水线的加速比:
CK=TL/TK=(n·k)/(k+(n-1)) 当 n>>k 时, Ck->k 。这就是说,理论上k级线性流水线处理几乎 可以提高k倍速度。但实际上由于存储器冲突、数据相关,这个理想的加速比不一定能 达到。
[解:] (1)加法器的流水线时钟周期至少为 τ=90ns+10ns=100ns
如果采用同样的逻辑电路,但不是流水线方式,则浮点加法所需的时间为 τ1+τ2+τ3+τ4 =300ns
因此,4级流水线加法器的加速比为 Ck=300/100=3
(2) 当每个过程段的时间都是75ns时,加速比为 Ck=300/75=4
[例30] 已知计算一维向量x,y的求和表达式如下:



56
65
20.5
14.6
0
336
121 35.1 336
114.3 + 7.2 = 121.5
69.6
72.8
142.4
3.14
1.41
4.55
试用4段的浮点加法流水线来实现一维向量的求和运算,这4段流水线是阶码比较、 对阶操作、尾数相加、规格化。只要求画出向量加法计算流水时空图。
2.CPU之内的浮点运算器
奔腾CPU将浮点运算器包含在芯片内。浮点运算部件采用流水线设计。
指令执行过程分为8段流水线。前4 段为指令预取(DF)、指令译码(D1)、地址生 成(D2)、取操作数(EX),在U、V流水线中完成;后4段为执行1(X1)、执行2(X2) 、结果写回寄存器堆(WF)、错误报告(ER),在浮点运算器中完成。一般情况下 ,由U流水线完成一条浮点数操作指令。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

浮点数的表示与运算一、选择1、在规格化浮点数运算中,若浮点数为25×1.10101,其中尾数为补码表示,则该数需将尾数左移一位规格化2、浮点数格式如下:1位阶符,6位阶码,1位数符,8位尾数。

若阶码用移码,尾数用补码表示,则浮点数所能表示数的范围是-263 ~(1-2-8)×2633、某浮点机,采用规格化浮点数表示,阶码用移码表示(最高位代表符号位),尾数用原码表示。

下列哪个数的表示不是规格化浮点数?(B )阶码尾数A.11111111,1.1000 (00)B.0011111,1.0111 (01)C.1000001,0.1111 (01)D.0111111,0.1000 (10)4、设浮点数阶的基数为8,尾数用模4补码表示。

试指出下列浮点数中哪个是规格化数?(C )A.11.111000B.00.000111C.11.101010D.11.1111015、按照IEEE654标准规定的32位浮点数(41A4C000)16对应的十进制数是( D )A.4.59375B.-20.59375C.-4.59375D.20.593756、如果某单精度浮点数、某原码、某补码、某移码的32位机器数为0xF0000000。

这些数从大到小的顺序是移>补>原>浮7、假定采用IEEE754标准中的单精度浮点数格式表示一个数为45100000H,则该数的值是(+1.125)10×2118、设浮点数共12位。

其中阶码含1位阶符共4位,以2为底,补码表示:尾数含1位数符共8位,补码表示,规格化。

则该浮点数所能表示的最大正数是27-19、如果浮点数的尾数用补码表示,则下列(D )中的尾数是规格化数形式。

A. 1.11000B. 0.01110C. 0.01010D.1.0001010、设浮点数的基数为4,尾数用原码表示,则以下(C )是规格化的数。

A. 1.001101B.0.001101C.1.011011D.0.00001011、已知X=00.875×21,Y=0.625×22,设浮点数格式为阶符1位,阶码2位,数符1位,尾数3位,通过补码求出Z=X-Y 的二进制浮点数规格化结果是0111 01112、IEEE754标准中的舍入模式可以用于二进制数也可以用于十进制数,在采用舍入到最接近且可表示的值时,若要舍入两个有效数字形式,(12.5)D应该舍入为1213、下列关于舍入的说法,正确的是(E )A.不仅仅只有浮点数需要舍入,定点数在运算时也可能要舍入B. 在浮点数舍入中,只有左规格化时可能要舍入C. 在浮点数舍入中,只有右规格化时可能要舍入二、综合应用题1、什么是浮点数的溢出?什么情况下发生上溢出?什么情况下发生下溢出?2、现有一计算机字长32位(D31~D0),数符位是第31位。

对于二进制1000 1111 1110 1111 1100 0000 0000 0000,1)表示一个补码整数,其十进制值是多少?2)表示一个无符号整数,其十进制值是多少?3)表示一个IEEE754标准的单精度浮点数,其值是多少?3、已知十进制数X=-5/256、Y=+59/1204,按机器补码浮点数运算规则计算X-Y,结果用二进制表示,浮点数格式如下:阶符取2位,阶码取3位,数符取2位,尾数取9位。

4、设浮点数字长32位,其中阶码部分8位(含一位阶符),尾数部分24位(含一位数符),当阶码的基值分别是2和16时:1)说明基值2和16在浮点数中如何表示。

2)当阶码和尾数军用补码表示,且尾数采用规格化形式时,给出两种情况下所能表示的最大正数真值和非零最小正数真值。

3)在哪种基值情况下,数的表示范围大?4)两种基值情况下,对阶和规格化操作有何不同?5、已知两个实数x=-68,y=-8.25,它们在C语言中定义为float 型变量,分别存放在寄存器A和B中。

另外,还有两个寄存器C和D。

A、B、C、D、都是32位的寄存器。

请问(要求用十六进制表示二进制序列):1)寄存器A和B中的内容分别是什么?2)x和y相加后结果存放在C寄存器中,寄存器C中的内容是什么?3)x和y相减后的结果存放在寄存器D中,寄存器D中的内容是什么?6、设浮点数的格式如下(阶码和尾数均用补码表示,基数为2):1)将27/46转换为浮点数2)将-27/46转换为浮点数7、两个规格化浮点数进行加/减法运算,最后对结果规格化时,能否确定需要右规的次数?能否确定需要左规的次数?8、对于下列每个IEEE754单精度值,解释它们所表示的是哪一种数字类型(规格化数、非规格化数、无穷大、0)。

当它们表示某个具体数值时,请给出该数值。

1)0b0000 0000 0000 0000 0000 0000 0000 00002)0b0100 0010 0100 0000 0000 0000 0000 00003)0b1000 0000 0100 0000 0000 0000 0000 00004)0b1111 1111 1000 0000 0000 0000 0000 00009、IBM370的短浮点数格式中,总位数为32位,左边第一位(b0)为数符,随后七位(b1~b7)为阶码,用移码表示,偏置常数为64,右边24位(b8~b31)为6为16进制原码小数表示的尾数,采用规格化形式表示。

若将十进制数-265.625用该浮点数格式表示,则应表示为(用十六进制形式表示)A. C3109A00HB. 43109A00HC. 83109A00HD. 03109A00H10、IBM370的短浮点数格式中,总位数为32位,左边第一位(b0)为数符,随后七位(b1~b7)为阶码,用移码表示,偏置常数为64,右边24位(b8~b31)为6为16进制原码小数表示的尾数,采用规格化形式。

若将十进制数-260.125用该浮点数格式表示,则应表示为什么?(用十六进制形式表示)11、IBM370的短浮点数格式中,总位数为32位,左边第一位(b0)为数符,随后七位(b1~b7)为阶码,用移码表示,偏置常数为64,右边24位(b8~b31)为6为16进制原码小数表示的尾数,采用规格化形式。

假定一个数表示成该浮点数格式为40100110H(用十六进制形式表示),则该数的真值是多少?12、把十进制数x=(+128.75)×2-10写成浮点表示的机器数,其中阶码、尾数分别用原码反码和补码表示。

设阶码4位,阶符1位,尾数15位,尾数符号1位。

13、设字长32的浮点数,阶码10位用移码表示,尾数22位用补码表示,基数为2,其格式如下:1)求最大数的二进制表示;2)求最小数的二进制表示;3)求规格化的范围14、有一个字长为32位的浮点数,阶码10位(包括1位阶符),用移码表示:尾数22位(包括1位尾符)用补码表示,基数r=2。

请写出:1)其所能表达的最大数,用二进制表示;2)其所能表达的最小数,用二进制表示;3)规格化数所能表示的数的范围;4)最接近于零的正规格化数与负规格化数。

15、两规格化浮点数相乘,是否可能需要右规?为什么?是否可能需要左规?若需要,能否确定左规的次数?16、两规格化浮点数相乘,是否可能需要左规?为什么?是否可能需要右规?若需要,能否确定左规的次数?17、设阶为5位(包括2位阶符),尾数为8位(包括2位数符),阶码、尾数均用补码表示,完成下列取值的[x+y],[x-y]运算:1)x=2-011×0.100101,y=2-010×(-0.011110)2)x=2-101×(-0.010110),y=2-100×0.01011018、已知两浮点数:A=(-0.010011)×2-010,B=(+0,110111)×2+001.假定阶码和尾数都用补码表示,阶码4位(含1位符号位),尾数7位(含1位符号位)。

试按规格化补码加法规则和步骤,采用“0舍1入”法,求[A+B]补=?19、用浮点数运算步骤对56+5进行二进制运算,浮点数格式为1位符号位、5位阶码位、10位尾码,基数为2。

算术逻辑运算单元ALU一、选择1、并行加法器中,每位全和的形式除与本位相加二数数值位有关外,还与低位数送来的进位有关2、ALU作为运算器的核心部件,其属于组合逻辑电路3、在串行进位的并行加法器中,影响加法器运算速度的关键因素是进位传递延迟4、加法器中每一位的进位生成信号g为X i Y i5、用8片74181 和两片74182 可组成二级先行进位结构的32位ALU6、组成一个运算器需要多个部件,但下面()不是组成运算器的部件。

A. 状态寄存器B. 数据总线C.ALUD. 地址寄存器7、加法器采用并行进位的目的是提高加法器运算速度8、算术/逻辑单元74181可完成16种算术运算功能和16种逻辑运算功能。

9、使用74LS181这种器件来构成一个16位的ALU,需要使用 4 片74LS181。

10、用4片74181和1片74182相配合,具有组内、组间均为并行进位传递功能。

11、用8片74181和2片74182可组成二级先行进位结构的32位ALU。

二、综合应用题1、一个由4个一位全加器构成的加法器,其进位链小组信号为C4、C3、C2、C1,各全加器的操作数位A i、B i(1≤i≥4)低位来的进位信号C0,请分别按下述两种方式写出C1、C2、C3和C4的逻辑表达式。

1)串行进位方式2)并行进位方式。

相关文档
最新文档