浮点数表示及运算

合集下载

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

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

浮点数的表示与运算一、选择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位。

浮点数的运算方法

浮点数的运算方法

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

浮点数的表示和运算浮点数的表示和基本运算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+38Console.WriteLine(float.MinValue); //-3.402823E+38Console.WriteLine(float.Epsilon); // 1.401298E-45//如果我们把它们转换成双精度类型,它们的值如下Console.WriteLine(Convert.ToDouble(float.MaxValue)); // 3.40282346638529E+38Console.WriteLine(Convert.ToDouble(float.MinValue)); //-3.40282346638529E+38Console.WriteLine(Convert.ToDouble(float.Epsilon)); // 1.40129846432482E-45那么这些值是如何求出来的呢?根据上面的约定,我们可以知道阶码P的最大值是11111110(这个值是254,因为255用于特殊的约定,那么对于可以精确表示的数来说,254就是最大的阶码了)。

c语言中float的用法举例

c语言中float的用法举例

C语言中f l o a t的用法举例一、概述在C语言中,fl oa t是一种用于表示浮点数的数据类型。

本文将通过一系列实例,详细介绍f lo at的用法及其常见应用场景。

二、基本语法在C语言中,我们可以通过以下方式声明和初始化fl oat类型的变量:```cf l oa tn um1=3.14;f l oa tn um2=2.71828;```三、浮点数运算与整数类型不同,浮点数类型可以进行复杂的数学运算,包括加减乘除和其他高级运算。

下面是一些示例:-加法运算:```cf l oa ts um=n um1+num2;```-减法运算:```cf l oa td if fe re nc e=n u m1-n um2;```-乘法运算:```cf l oa tp ro du ct=n um1*nu m2;```-除法运算:```cf l oa tq uo ti en t=num1/n um2;```四、f l o a t与整数的互相转换有时候我们需要在fl o at和整数之间进行转换,C语言提供了一些函数来实现这些转换。

-f lo at转换为整数:```cf l oa tn um=3.14;i n ti nt Nu m=(i nt)nu m;```-整数转换为fl oa t:```ci n ti nt Nu m=5;f l oa tn um=(fl oa t)i n tN um;```五、浮点数的精度问题由于浮点数的存储方式和运算规则,可能会导致浮点数的精度损失。

这时候我们需要注意一些细节,例如:-比较两个浮点数是否相等时,应该使用一个误差范围进行判断,而不是直接用等号。

f l oa ta=0.1+0.2;f l oa tb=0.3;i f(f ab s(a-b)<1e-6){p r in tf("aa nd ba rea p pr ox im at el ye qua l.\n");}e ls e{p r in tf("aa nd ba ren o te qu al.\n");}```-尽量避免在浮点数之间进行等值判断,而是使用范围判断。

2022考研408计算机组成原理知识:浮点数的表示和运算

2022考研408计算机组成原理知识:浮点数的表示和运算

计算机组成原理在408计算机综合考试中所占分值45分,说明是必考的重点内容,考生要在这部分多花时间复习。

以下是整理的的计算机组成原理知识,希望大家认真看。

2022考研408计算机组成原理知识:浮点数的表示和运算1. 浮点数的表示1)浮点数的表示范围;浮点数是指小数点位置可浮动的数据,通常以下式表示:N=M·RE其中,N为浮点数,M为尾数,E为阶码,R称为“阶的基数(底)”,而且R为一常数,一般为2、8或16。

在一台计算机中,所有数据的R都是相同的,于是不需要在每个数据中表示出来。

因此,浮点数的机内表示一般采用以下形式:浮点数的机内表示一般采用以下形式:Ms是尾数的符号位,设置在最高位上。

E为阶码,有n+1位,一般为整数,其中有一位符号位,设置在E的最高位上,用来表正阶或负阶。

M为尾数,有m位,由Ms和M组成一个定点小数。

Ms=0,表示正号,Ms=1,表示负。

为了保证数据精度属数通常用规格化形式表示:当R=2,且尾数值不为0时,其绝对值大于或等于(0.5)10。

对非规格化浮点数,通过将尾数左移或右移,并修改阶码值使之满足规格化要求。

2)IEEE754标准根据IEEE 754国际标准,常用的浮点数有两种格式:(1)单精度浮点数(32位),阶码8位,尾数24位(内含:位符号位)。

(2)双精度浮点数(64位),阶码11位,尾数53位(内含:位符号位)。

单精度格式32位,阶码为8位,尾数为23位。

另有一位符号位S,处在最高位。

由于IEEE754标准约定在小数点左部有一位隐含位,从而实际有效位数为24位。

这样使得尾数的有效值变为1.M 。

例如,最小为x1.0…0,,最大为x1.1…1。

规格化表示。

故小数点左边的位横为1,可省去。

阶码部分采用移码表示,移码值127,1到254经移码为-126到+127。

S(1E(8M(23N(符号位符号位不等于(-1)S·2-126·(0.M)符号位1-(-1)S·2E-127·(1.M)符号位255不等于NaN(符号位255无穷大0 有了精确的表示,无穷大也明确表示。

计算机组成原理:浮点数表示及运算电子教案

计算机组成原理:浮点数表示及运算电子教案
浮点数的表示范围 负下溢 正下溢
负上溢
正上溢
-

负数 最
0
正数


+





负正正数 Nhomakorabea数


N=2E×M
|N|→∞ 产生正上溢或者负上溢
|N|→0 产生正下溢或者负下溢
计算机组成原理
3
机器字长一定时,阶码越长,表示范围越大,精度越低 浮点数表示范围比定点数大,精度高
8位定点小数可表示的范围
0.1000101010
把不满足这一表示要求的尾数,变成满足这一要求的尾数 的操作过程,叫作浮点数的规格化处理,通过尾数移位和修改 阶码实现。
计算机组成原理
5
规格化目的: 为了提高数据的表示精度 为了数据表示的唯一性 尾数为R进制的规格化: 绝对值大于或等于1/R
二进制原码的规格化数的表现形式:
正数 0.1xxxxxx 负数 1.1xxxxxx 补码尾数的规格化的表现形式:尾数的最高位与符号位相反。
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
指数e=阶码-127=10000010-01111111 =00000011=(3)10 包括隐藏位1的尾数: 1.M=1.011 0110 0000 0000 0000 0000=1.011011 于是有 x=(-1)s×1.M×2e

第2章2.3浮点运算和浮点运算器

第2章2.3浮点运算和浮点运算器
• 如果△E=0,说明两数阶码相等,无需对阶; • 如果△E>0,即Ex>Ey,则Ey向Ex靠拢,尾数My相应右移; • 如果△E<0,即Ex<Ey,则Ex向Ey靠拢,尾数Mx相应右移。
• 阶码用移码表示
• 移码的特点:真值越大,移码的数值也越大,无论正负 • 可以用比较电路直接比较两个阶码的大小
4
2.3 .3 浮点运算流水线
1 流水线原理
• 线性流水线 • 各子任务之间具有这种线性优先关系的流水线 • 线性流水线的硬件基本结构(流水线CAI演示) • 处理一个子任务的过程为过程段(Si) • 线性流水线由一系列串联的过程段组成 • 各个过程段之间设有高速缓冲寄存器(L),以暂 时保存上一过程子任务处理的结果 • 在一个统一的时钟(C)的控制下,数据从一个过 程段流向下一个相邻的过程段
• 当指令控制器工作时,运算器基本上处于空闲状态,而当 运算器工作时指令控制器又处于空闲状态,资源浪费浪费 • 完成第一条指令前三步后,指令控制器不等运算器完成 该指令后两步,立即开始第二条指令,运算器也如此; 16 • 形成一种与工厂中的装配流水线类似的流水线
2.3 .3 浮点运算流水线
1 流水线原理
【例2-18】 设x=2010×0.11011011,y=2100×(-0.10101100), 求x+y。 【解】 为了便于直观理解,假设两数均以补码表示,阶码采用双符 号位,尾数采用单符号位,则它们的浮点表示分别为 [x]浮=00 010 0.11011011 [y]浮=00 100 1.01010100 ①求阶差并对阶 △E=Ex-Ey=[Ex]补+[-Ey]补=00 010+11 100=(11 110)补= (11 010)原=(-2)10 简单起见,010是2D, 100是4D,所以 △E=-2D x的阶码小,应使Mx右移2位,Ex加2 ∴[x]浮=00 100 0.00110110(11) 其中(11)表示Mx右移2位后移出的最低两位数。

浮点数表示及运算

浮点数表示及运算

Emax=2046, f=1.1111…,1.111…1×22046-1023 =21023×(2-2-52)
负下溢出 零
负上溢出 可表示负数范围
正下溢出 可表示正数范围 正上溢出
ห้องสมุดไป่ตู้-(1-2-23) 2127
计算机组成原理
-0.52-128 0 0.52-128
(1-2-23) 2127
数轴
指数e=阶码-127=10000010-01111111 =00000011=(3)10 包括隐藏位1的尾数: 1.M=1.011 0110 0000 0000 0000 0000=1.011011 于是有 x=(-1)s×1.M×2e
=+(1.011011)×23=+1011.011=(11.375)10
计算机组成原理
12
单精度浮点数编码格式
符号位 0/1 0/1 0 1 0/1 0/1 0/1
阶码 255 255 255 255 1~254
0 0
尾数 非零1xxxx 非零0xxxx
0 0
f f (非零)
0
表示
NaN Not a Number sNaN Signaling NaN +∞ -∞ (-1)S× (1.f) 2 × (e-127) (-1)S× (0.f) 2 × (-126) +0/-0
正数 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

浮点运算

浮点运算

2.5浮点运算与浮点运算器2.5.1浮点数的运算规则浮点数的形式X=Mx * 2E x▲ 尾数的右移: 若尾数是原码表示,每右移一位,符号位不参加移位,尾数高位补0;若尾数是补码表示,每右移一位,符号位参加右移,并保持补码的符号不变。

一、浮点加法和减法设有两个浮点数:X=Mx * 2E x Y=My * 2E y它们的加减步骤是:1、对阶——使两个数的阶码相等,才能进行尾数的加减。

对阶原则——小阶向大阶看齐,即小阶的尾数向右移位(相当于小数点左移),每右移一位,其阶码加1,直到两数的阶码相等为止,右移的位数等于阶差△E 。

例1:两浮点数X=201*0.1101, Y=211*(-0.1010),将两个数对阶。

解:假设两数在计算机中以补码表示。

[△E]补=[Ex]补 – [Ey]补=[Ex]补 + [–Ey]补=00 01 + 11 01=11 10即△E=-2,表示Ex 比Ey 小2,因此将X 的尾数右移2位:右移一位,得[X]浮=00 10,00.0110再右移一位,得[X]浮=00 11,00.0011对阶完毕。

2、尾数求和+ 尾数和为:3、规格化(1)对于补码来说 规格化(2)规格化的方法浮点数的尾数相加后得到补码的形式M ,对比符号位和小数点后的第一位,如果它们不等,即为00. 1…和11. 0…的形式,就是规格化的数;如果它们相等,即00. 0…或11. 1…,就不是规格化的数,此时要进行左规格化,或左规。

向左规格化——尾数左移1位,阶码减1。

当结果出现01.…或10. …的形式时,要进行右规格化,或右规。

00 001111 011011 1001 正数:00. 1… 负数:11. 0…向右规格化——尾数右移1位,阶码加1。

4、舍入在对阶或向右规格化时,尾数要向右移位,这样,被右移的尾数的低位部分会被丢掉,从而造成一定的误差,因此要进行舍入处理。

舍入的方法——“0舍1入”:如果右移时,被丢掉数位的最高位是0则舍去,反之则将尾数的末位加“1”。

浮点数的运算方法

浮点数的运算方法
阶符 X: Y: 0 0 0 0 阶码 010 100 数符 0 0 1 1 尾 数
11011011 01010100
21
计算过程: ① 对阶操作 阶差∆E=[EX]补+[-EY]补 =00010+11100=11110 X阶码小,MX右移2位,保留阶码E=00100。 [MX]补=00 00 110 110 11 下划线上的数是右移出去而保留的附加位。
权 22
010.01 110.1
23 ×0.01001 23 ×0.1101
对应位权值相同
对应位权不一样,不能直接相加减 对应位权不一样,
对阶:使两数阶码相等(小数点实际位置对齐)。 对阶:使两数阶码相等(小数点实际位置对齐)。
5
(1)“对阶”原则: ) 对阶”原则:
原则:小阶向大阶看齐。 原则:小阶向大阶看齐。
3.5 浮点数的运算方法
1
浮点数比定点数的表示范围宽, 浮点数比定点数的表示范围宽,有效精度 更适合于科学与工程计算的需要。 高,更适合于科学与工程计算的需要。当要 求计算精度较高时,往往采用浮点运算。 求计算精度较高时,往往采用浮点运算。
2
3.5.1 浮点数的加减法运算
浮点数的表示形式(以 为底进行讨论 为底进行讨论): 浮点数的表示形式 以2为底进行讨论 : N=M·2E M为浮点数的尾数,一般为绝对值小于1 为浮点数的尾数,一般为绝对值小于 为浮点数的尾数 的规格化二进制小数, 的规格化二进制小数,用原码或补码形式表 示; E为浮点数的阶码,一般是用移码或补码 为浮点数的阶码, 为浮点数的阶码 表示的整数。 表示的整数。
9
2、尾数的加/减运算( MX±MY ) 、尾数的加 减运算 减运算(
执行对阶后,两尾数进行加 减运算 减运算, 执行对阶后,两尾数进行加/减运算,得到两数 之和/差 之和 差。

浮点乘法、除法运算

浮点乘法、除法运算

x×y=2(E x+E y)·(M x×M y)x÷y=2(E x-E y)·(M x÷M y)浮点乘法、除法运算2.6.2 浮点乘法、除法运算 1.浮点乘法、除法运算规则设有两个浮点数x和y: x=2E x·M x y=2E y·M y浮点乘法运算的规则是(2.40)即乘积的尾数是相乘两数的尾数之积,乘积的阶码是相乘两数的阶码之和。

当然,这⾥也有规格化与舍⼊等步骤。

浮点除法运算的规则是(2.41)商的尾数是相除两数的尾数之商,商的阶码是相除两数的阶码之差。

也有规格化和舍⼊等步骤。

2.浮点乘、除法运算步骤浮点数的乘除运算⼤体分为四步: 第⼀步,0 操作数检查;第⼆步,阶码加/减操作;第三步,尾数乘/除操作;第四步,结果规格化及舍⼊处理。

(1) 浮点数的阶码运算 对阶码的运算有+1、-1、两阶码求和、两阶码求差四种,运算时还必须检查结果是否溢出。

在计算机中,阶码通常⽤补码或移码形式表⽰。

补码运算规则和判定溢出的⽅法,前⾯已经讲过。

这⾥只对移码的运算规则和判定溢出的⽅法进⾏讲解。

移码的定义为 [x]移=2n +x 2n >x≥-2n 按此定义,则有 [x]移+[y]移=2n +x+2n +y =2n +(2n +(x+y)) =2n +[x+y]移 即直接⽤移码实现求阶码之和时,结果的最⾼位多加了个1,要得到正确的移码形式结果,必须对结果的符号再执⾏⼀次求反。

当混合使⽤移码和补码时,考虑到移码和补码的关系:对同⼀个数值,其数值位完全相同,⽽符号位正好完全相反。

⽽[y]补的定义为 [y]补=2n +1+y则求阶码和⽤如下⽅式完成:[x+y]移=[x]移+[y]补 (mod 2n +1)[x-y]移=[x]移+[-y]补 [x]移+[y]补=2n +x+2n +1+y =2n +1+(2n +(x+y))即(2.42)同理(2.43) 上⼆式表明执⾏阶码加减时,对加数或减数 y来说,应送移码符号位正常值的反码。

浮点数的四则运算

浮点数的四则运算
2.7 浮点数的四则运算
主要内容:
• 浮点加减运算 • 浮点乘除运算
2.7.1 浮点加减运算
1、对阶 ■ 规则:小阶对大阶。
原因:舍去尾数低位,产生误差;若丢失尾数高位,必 然导致错误。
■ 方法:求阶差。
阶差=0,不需对阶; 阶差≠0,小阶码数的尾数右移,右移次数为阶差的绝 对值,其阶码加上阶差的绝对值。
❖X-Y的结果需要右规,将尾数右移1位,阶码加1,得:[X-Y]浮 =0011;00100010,阶码未超出+Emax,∴未溢出
6
4)舍入 ❖由于X+Y是左规,结果不需要舍入; ❖X-Y为右规,若采用末位恒置1法,则
[X-Y]浮=0011;00100011。 ❖若采用0舍1入法,则结果相同。
7
2.7.2 浮点乘除运算
解先将两浮点数表示为规格化的浮点数x浮000100110101y浮0010110101101对阶求阶差e0001补0010补1111补1exey按小阶对大阶原则x的尾数右移1位阶码加1尾数舍入采用末位恒置1法则x浮00100001101162尾数求和差000110111101011011110001即xy浮0010111100013结果规格化及判溢xy的结果是非规格化的数需左规
阶码一般用补码或者移码表示。
若阶码用移码表示,则根据移码的定义可知: [Ex]移 + [Ey]移 = 2n + Ex + 2n + Ey
= 2n + (2n + Ex + Ey) = 2n + [Ex + Ey]移 若直接用移码求阶码之和,结果比两数之和的移码多 了2n,即最高位上多加了一个1. 所以,要求两数和的移码,必须将两数移码之和的最 高位(符号位)取反。

浮点数计算方法ppt

浮点数计算方法ppt
+|x|
2n>x≥0 0≥x>-2n
对于0,原码机器中往往有“+0”、“-0” 之分,故有两种形式:
[+0]原 = 0.000...0 [ -0]原 = 1.000...0
采用原码表示法简单易懂,但它的最大 缺点是加法运算复杂。这是因为,当两数相 加时,如果是同号则数值相加;如果是异号, 则要进行减法。而在进行减法时还要比较绝 对值的大小,然后大数减去小数,最后还要 给结果选择符号。为了解决这些矛盾,人们 找到了补码表示法。
2. 补码表示法
我们先以钟表对时为例说明补码的概念。
假设现在的标准时间为4点正; 而有一只表已
经7点了,为了校准时间,可以采用两种方法:
一是将时针退 7-4=3 格;一是将时针向前拨12-
3=9格。这两种方法都能对准到4点,由此可以
看出,减3和加9是等价的,就是说9是(-3)对12
的补码,可以用数学公式表示:
浮点数所表示的范围远比定点数大。一台 计算机中究竟采用定点表示还是浮点表示,要根 据计算机的使用条件来确定。一般在高档微机 以上的计算机中同时采用定点、浮点表示,由使 用者进行选择,而单片机中多采用定点表示。
[例1] 若浮点数x的754标准存储格式为
(41360000)16,求其浮点数的十进制数值。
4. 移码表示法
移码通常用于表示浮点数的阶码。由于
阶码是个n位的整数,假定定点整数移码形式
为 x0x1x2…xn时,对定点整数移码的传
统定义是:
[x]移=2n+x
2n>x≥-2n
若阶码数值部分为5位,以x表示真值,
则: [x]移=25+x
25>x≥- 25
小结:上面的数据四种机器表示法中,移码 表示法主要用于表示浮点数的阶码。由于补 码表示对加减法运算十分方便,因此目前机 器中广泛采用补码表示法。在这类机器中, 数用补码表示,补码存储,补码运算。也有 些机器,数用原码进行存储和传送,运算时 改用补码。还有些机器在做加减法时用补码 运算,在做乘除法时用原码运算。

计算机基础知识了解计算机中的浮点数表示和运算

计算机基础知识了解计算机中的浮点数表示和运算

计算机基础知识了解计算机中的浮点数表示和运算计算机基础知识:了解计算机中的浮点数表示和运算计算机科学中的浮点数是非常重要的一部分。

在许多计算机应用中,浮点数被用来表示和计算具有小数点的数值。

了解浮点数的表示方法和运算规则,对于理解计算机中数字处理的原理和特性非常有帮助。

本文将介绍计算机中浮点数的表示和运算规则。

一、浮点数表示方法在计算机中,浮点数采用科学记数法的方式进行表示。

它由两部分组成:尾数和指数。

尾数部分是一个二进制小数,通常将其规范化为1.xxxxxx的形式。

这个小数点的位置可以通过指数进行调整。

指数部分是一个带符号的整数,用于表示小数点在尾数中的位置。

正指数表示小数点向右移动,负指数表示小数点向左移动。

通过将尾数和指数组合起来,就可以表示任意大小和精度的浮点数。

二、浮点数运算规则在计算机中,浮点数的运算遵循一定的规则,包括加法、减法、乘法和除法等。

1. 加法和减法当进行浮点数加法或减法时,首先需要将两个浮点数的指数进行比较,并将较小的指数调整为与较大指数相等,同时也需要相应地调整尾数。

接下来,将调整后的尾数进行相加或相减,并根据结果进行规范化和舍入。

2. 乘法在浮点数乘法中,首先将两个浮点数的尾数进行相乘,并将结果进行规范化。

然后将两个浮点数的指数相加,得到最终结果的指数。

最后,根据指数的差异进行舍入和溢出的处理。

3. 除法在浮点数除法中,首先将两个浮点数的尾数进行相除,并将结果进行规范化。

然后将两个浮点数的指数相减,得到最终结果的指数。

最后,根据指数的差异进行舍入和溢出的处理。

三、浮点数的精度问题由于计算机中浮点数的表示是有限的,所以在进行运算时会存在精度的损失。

这是由于计算机在表示小数时只能采用有限的二进制位数。

例如,当两个非常接近的浮点数进行相减时,可能会因为精度限制而得到一个极小的非零值,这种情况被称为舍入误差。

此外,在进行大数和小数的运算时,可能会出现溢出或下溢的问题。

溢出是指计算结果超出了浮点数的表示范围,而下溢是指计算结果过小而无法表示。

浮点数的表示与运算

浮点数的表示与运算

浮点数的表示与运算
浮点数的表示和运算涉及到计算机内部对实数的二进制表示以及相关的运算规则。

在计算机中,浮点数一般采用 IEEE 754 浮点数标准进行表示。

这个标准规定了浮点数的二进制表示、舍入规则以及基本运算规则。

1. 浮点数的表示:
IEEE 754 浮点数标准规定了浮点数的二进制表示形式,主要包括三个部分:符号位、指数位和尾数位。

一个浮点数表示为:(127)(1) 1.2S E M −−⨯⨯
• S 是符号位,1位,0 表示正数,1 表示负数。

• M 是尾数(也称为尾数部分或尾数位),通常为23位。

• E 是指数,8位。

2. 浮点数的运算:
浮点数的运算包括加法、减法、乘法、除法等。

在进行浮点数运算时,需要注意以下几点:
• 舍入误差: 浮点数的表示范围是有限的,因此在运算中可能会出现舍入误差,导致最终结果的精度不准确。

• 溢出和下溢: 运算可能导致结果超出浮点数表示范围,这称为溢出;结果太接近零而无法表示,称为下溢。

• 运算顺序: 浮点数运算的顺序可能影响结果。

由于浮点数的有限精度,运算的顺序可能导致不同的舍入误差。

•特殊值处理:浮点数标准定义了特殊值,如正无穷大、负无穷大、NaN(Not a Number),在运算中需要适当处理这些特殊值。

在实际应用中,为了减小舍入误差,可能需要使用高精度库或者一些优化技巧,同时在编写代码时需要注意规避可能导致溢出和下溢的情况。

另外,对于一些对精度要求较高的场景,可能需要谨慎选择算法和数据结构。

第5讲_浮点数四则运算

第5讲_浮点数四则运算

二、浮点乘除运算
x = Sx · 2 1. 乘法
jx
y = Sy · 2
jy
x · = (Sx · y)×2 y S
2. 除法
jx+jy
x = Sx × 2jx – jy y Sy
3. 步骤 (1) 阶码采用 补码定点加(乘法)减(除法)运算
(2) 尾数乘除同 定点 运算 (3) 规格化
4. 浮点运算部件 阶码运算部件,尾数运算部件
[Ex]补=00 100 [Ey]补=00 100 [-Ex]补=11 100 [Mx]补=00 0011011011 [My]补=11 01010100
(2)尾数相加 用补码的加法公式 [My]补= 11 01010100 [Mx+My]补=[Mx]补+[My]补 = 00 0011011011+ 11 01010100 =11 1000101011
58二进制形式定点表示浮点规格化形式0001011111定点机中浮点机中当浮点数尾数为时不论其阶码为何值按机器零处理当浮点数阶码等于或小于它所表示的最小10当阶码用移码尾数用补码表示时机器零为电路的实现当阶码和尾数都用补码表示时机器零为ieee754短实数长实数临时实数符号位尾数总位数2332115264156480小数点位置尾数为规格化表示的有效位最高位为1隐含1001对阶
浮点数的阶码通常用补码或移码表示。 移码公式: 把[X]补符号 [X]移= 2n + X -2n≤ X< 2n 位取反即可 得[X]移 移码特点:
(1)0表示负数,1表示正数 (2)只执行加减运算,且需要对得到的结果加以修正,即对 结果的符号位取反。
零的移码唯一
[X]移=10000
浮点数的机内表示有下面二种格式:
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

计算机组成原理
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位

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

计算机组成原理
7
三 、浮点数的标准格式IEEE754
为便于软件移植,使用 IEEE(电气和电子工程师协会)标准IEEE754 标 准:尾数用原码;阶码用“移码”;基为2。
31 30
23 22
0
32位
64位 S
S
63 62
E
E
M
52 51 0
M
S——尾数符号,0正1负; M——尾数, 纯小数表示, 小数点放在尾数域的最前面。采用原码表示。 E——阶码,采用“移码”表示(移码可表示阶符); 阶符采用隐含方式,即采用移码方法来表示正负指数。
设阶码3位,尾数3位

0.0000000001 --- 1110000
4
计算机组成原理
二、浮点数规格化 浮点数是数学中实数的子集合,由一个纯小数乘上一个指数 值来组成。
一个浮点数有不同的表示:
0.5; 0.05101 ; 0.005 102 ; 50 10-2 为提高数据的表示精度,需做规格化处理。 在计算机内,其纯小数部分被称为浮点数的尾数,对非 0 值的浮点数,要求尾数的绝对值必须 >= 1/2,即尾数域的最高 有效位应为1,称满足这种表示要求的浮点数为规格化表示:
计算机组成原理 22
(5) 舍入处理 在对阶或向右规格化时, 尾数要向右移位, 这样, 被右移的尾数 的低位部分会被丢掉, 从而造成一定误差,因此要进行舍入处理。 • 简单的舍入方法有两种: ① “0舍1入”法
正下溢出 零 负上溢出 可表示负数范围 可表示正数范围 正上溢出
数轴
计算机组成原理
双精度 Emin=1, M=0, 1-1023 -1022 1.0×2 =2
负下溢出
-(1-2-23 )2127
-0.52-128
0
0.52-128
(1-2-23)2127
14
浮点加减法运算
设有两个浮点数x和y, 它们分别为: x=2Ex · x M y=2Ey · y M 其中 Ex 和 Ey 分别为数x和y的阶码, Mx 和 My为数x和y的尾数。 两浮点数进行加法和减法的运算规则是: x±y=(Mx2Ex-Ey±My)2Ey Ex <= Ey
0.00001+0.11000=0.11001
计算机组成原理 17
例: x=201×0.1101, y=211×(-0.1010), 求x+y=? 解:为便于直观了解,两数均以补码表示,阶码、尾数均采用 双符号位。 [x]补=00 01, 00.1101 [y]补=00 11, 11.0110 [△E]补= [ Ex]补-[Ey]补= 00 01+11 01 = 11 10 △E = -2, 表示Ex比Ey小2, 右移一位, 再右移一位, 至此, △E=0, 因此将x的尾数右移两位. 得 [x]补=00 10, 00.0110 得 [x]补=00 11, 00.0011 对阶完毕.
计算机组成原理
浮点数表示及运算
2013年11月25日
计算机组成原理 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)
0100 0001 1010 0100 1100 0000 0000 0000= (41A4C000)16
计算机组成原理
11
例:将十进制数-0.75表示成单精度的IEEE 754标准代码。
解:-0.75 = -3/4 = -0.112 = -1.1×2-1
=(-1)1×(1 + 0.1000 0000 0000 0000 0000 000)×2-1 =(-1)1×(1 + 0.1000 0000 0000 0000 0000 000)×2126-127
计算机组成原理
20
规格化规则




运算结果产生溢出时,必须进行右归 如变形补码结果出现 10.XX 或者 01.XXX 如运算结果出现 0.0XXX或 1.1XX 必须左归 左归时最低数据有效位补0 右归时连同符号位进位位一起右移 左归时,阶码作减法,右归时,阶码作加法
规格化方法

计算机组成原理
18
(3) 尾数求和运算 尾数求和方法与定点加减法运算完全一样。 对阶完毕可得: [x]补=00 11, 00.0011 [y]补=00 11, 11.0110 对尾数求和: 00.0011 + 11.0110 11.1001 即得: [x+y]补=00 11, 11.1001
计算机组成原理
计算机组成原理
8
规格化浮点数的真值
31 30
32位浮点数格式:
23 22
0
S
E
M
一个规格化的32位浮点数x的真值为: x = (-1)s (1.M) 2E-127 e =E – 127 一个规格化的64位浮点数x的真值为: 这里e是真值,E是机器数 x = ( –1)s×(1.M)×2E-1023
s=1,E=12610 = 011111102,F=1000 … 000。
1 011,1111,0 100,0000,0000,0000,0000,0000 B F 4 0 0 0 0 0 H
计算机组成原理
12
单精度浮点数编码格式
符号位
阶码
尾数
表示
0/1
0/1 0
255
255 255
非零1xxxx
Emin=1, Emax=254/2046
计算机组成原理
9
例:若浮点数 x 的二进制存储格式为(41360000)16,求其32位 浮点数的十进制值。
解: 0100,0001,0011,0110,0000,0000,0000,0000 数符:0 阶码:1000,0010 尾数:011,0110,0000,0000,0000,0000 指数e=阶码-127=10000010-01111111 =00000011=(3)10 包括隐藏位1的尾数: 1.M=1.011 0110 0000 0000 0000 0000=1.011011 于是有 x=(-1)s×1.M×2e =+(1.011011)×23=+1011.011=(11.375)10
计算机组成原理
10
例: 将十进制数20.59375转换成32位浮点数的二进制格式来存储。
解:首先分别将整数和分数部分转换成二进制数: 20.59375=10100.10011 然后移动小数点,使其在第1,2位之间 10100.10011=1.010010011×24 e=4 于是得到: e =E – 127 S=0,E=4+127=131=1000,0011,M=010010011 最后得到32位浮点数的二进制存储格式为
0.1000101010
把不满足这一表示要求的尾数,变成满足这一要求的尾数 的操作过程,叫作浮点数的规格化处理,通过尾数移位和修改 阶码实现。
计算机组成原理 5
规格化目的: 为了提高数据的表示精度 为了数据表示的唯一性 尾数为R进制的规格化: 绝对值大于或等于1/R 二进制原码的规格化数的表现形式:
正数 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
相关文档
最新文档