



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
浮点数在计算机中的存储十进制浮点数格式: 浮点数格式使用科学计数法表示实数。科学计数法把数字表示为系数(coefficient)(也称为尾数(mantissa),和指数 (exponent)两部分。比如 3.684*102. 在十进制中,指数的基数为 10,并且表示小数点移动多少位以生成系数。每次小数点向前移动时,指数就递增;每次小数点向后移动时,指数就递减。例如,25.92 可表示为 2.592 * 101,其中 2.592 是系数,值 101 是指数。必须把系数和指数相乘,才能得到原始的实数。另外,如 0.00172 可表示为 1.72*10-3,数字 1.72 必须和 10-3 相乘才能获得原始值。二进制浮点格式: 计算机系统使用二进制浮点数,这种格式使用二进制科学计数法的格式表示数值。数字按照二进制格式表示,那么系数和指数都是基于二进制的,而不是十进制,例如 1.0101*22. 在十进制里,像 0.159 这样的值,表示的是 0 + (1/10) + (5/100) + (9/1000)。相同的原则也适用二进制。比如,1.0101 乘以 22 后,生成二进制值 101.01 ,这个值表示二进制整数 5,加上分数 (0/2) + (1/4) 。这生成十进制值 5.25 。下表列出几个二进制小数以及它们对应的十进制值:二进制十进制分数十进制值0.11/20.50.011/40.250.0011/80.1250.00011/160.06250.000011/320.031250.0000011/640.015625几个二进制浮点例子:二进制十进制分数十进制值10.1012+1/2+1/82.62510011.00119+1/819.12510110.110122+1/2+1/4+1/1622.81251101.01113+1/4+1/813.375编写二进制浮点值时,二进制通常被规格化了。这个操作把小数点移动到最左侧的数位,并且修改指针进行补偿。例如 1101.011 变成 1.101011*23 浮点数的存储 IEEE 标准754 浮点数标准使用 3 个成分把实数定义为二进制浮点值: 符号 有效数字 指数 符号位表示值是负的还是正的。符号位中的 1 表示负值,0 表示正值。 有效数字部分表示浮点数的系数(coefficient)(或者说尾数(mantissa)。系数可以是规格化的(normalized),也可以是非规格化的(denormalized)。所谓规格化,就是任何一个数的科学计数法的表示都可为1.xxx*2n,既然小数点左边的一位都是1,就可以把这一位省略。单精度浮点数23bit的尾数部分,可表示的精度却为24位,道理就在这里。 指数表示浮点数的指数部分,是一个无符号整数。因为指数值可以是正值,也可以是负值,所以通过一个偏差值对它进行置偏,及指数的真实值=指数部分的整数 偏差值。对于32位浮点数,偏差值=127;对于64位浮点数,偏差值=1023.浮点数的这 3 个部分被包含在固定长度的数据格式之内。IEEE 标准754 定义了浮点数的两种长度: 32位单精度 和 64位双精度可以用于表示有效数字的位的数量决定精度。下图显示了两种不同精度类型的位布局:单精度浮点使用 23 位有效数字值。但是,浮点格式假设有效数字的整数部分永远为 1 ,并且不在有效数字值中使用它。这样实际上有效数字的精度达到了 24 位。指数使用 8 位值,它的范围从 0255,称为移码指数,意思是必须从指数中减去一个数(称为偏移量或者是偏差值),对单精度浮点数而言,这个值是 127 。当指数是0和255时,指数由别的含义,因此实际指数的范围是从 -126 到 +127 (二进制指数),这样整个浮点数的范围则为:(1.18 * 10-381.02-126 到 3.40 * 10381.112127)。 指数0和255用于特殊用途。如果指数从1变化到254,则由s(符号位)、e(指数)和f(有效数)来表示的数为: -1的 s 次幂是数学上的一种方法,意思是“如果 s 为0,则数是正的(因为任何数的 0 次幂等于 1 );如果 s 为 1,则数是负的(因为 -1的 1 次幂为 -1)”。 表达式的另一部分是1.f,意思是1后面为二进制小数点,再后面为23位的有效小数部分。它乘以2的幂,其中指数为内存中的8位移码指数减去127。 注意,还有一种特殊的情况 0 : 如果 e 等于 0,且 f 等于 0,则数为 0。通常,所有32位均为 0 则表示 0。但是符号位可以是 1,在这种情况下,数被解释为-0。-0 可以表示一个很小的数,小到在单精度格式中不能用数字和指数来表示。尽管如此,它们然小于 0。 如果 e 等于 0,且 f 不等于0,则数是有效的。但是,它不是规格化的数,它等于注意,二进制小数点左边的有效数为0。 如果e等于255,且f等于0,则数为正或负无穷大,这取决于符号s。 如果e等于255,且f不等于0,该值被认为“不是一个数”,简写为NaN。NaN可以表示一个不知道的数或者一个无效操作的结果。Q:3.40 * 1038 是值怎么来的?A :在单精度浮点格式中可以表示的最大规格化的正或负二进制数为:换算成 10 进制约等于:3.402823669e+38,这里 1.111.111 近似为 2,则 2 * 2127 = 2128 = 3.402823669e+38 .Q:1.18 * 10-38 的值是怎么来的?A:通常,单精度浮点格式中可以表示的最小规格化的正或负二进制数为:换算成 10 进制就是:1.175494351e-38,也就是约等于 1.18 * 10-38 。Q:单精度浮点24位换算为十进制后,为什么精度是 7 位?A:10位二进制数近似等于3位十进制数。也就是说,若10位都置1(即十六进制为3FFh,十进制为1023),则它近似等于3位十进制都设置为9,即999。或者:这种关系表明按单精度浮点格式存放的24位二进制数大约与7位十进制数等效。因此,也可以说单精度浮点格式提供24位二进制精度,或大约7位十进制精度。可以这么设,一个 2 相当于 10k 次方,即 10k=2。那么 2 的 24 次方 224 = 1024k 。从 10k=2 可以知道 k = log10(2)0.301。所以,2 的 24 次方换算到十进制,相当于有 24*log10(2)约等于 7.2 个精度 。Q:262144.00 和 262144.01 是一样的么?A:当然不是一样的!但是在计算机里,单精度的存储中,它们却是一样的!看这两个数作为单精度浮点数时在计算机里是怎么存储的:两者被存储为同一个数字:。那这是为什么呢?原因是,规格化单精度浮点里,在小数点后有 23 位数,而 1.000.000 会经过 218 次方的运算后小数点会往前移动 18 个,那么小数点后面就只剩下 5 位,这时即使是 1/(25)=0.03125 都要比 0.01大,所以没办法,只能存为一样的数。那么上面的问题如何避免呢?答案是,使用双精度浮点数。双精度浮点数的指数偏移量为1023,即3FFh,所以,以这种格式存放的数为:它具有与单精度格式中所提到适用于0、无穷大和NaN等情形相同的规则。最小的双精度浮点格式的正数或负数为:最大的数为:用十进制表示,它的范围近似为 。10的308次幂是一个非常大的数,在1后面有308个十进制零。53 位有效数(包括没有包含在内的那1位)的精度与16个十进制位表示的精度十分接近。相对于单精度浮点数来说
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 租赁合同范本怎么签约
- 学生书本租售合同范本
- 教培工资合同范本
- 假山工程担保合同范本
- 个人电子借款合同范本
- 低层公寓出租合同范本
- 文员制定合同范本模板
- 过敏性紫癜关节型护理查房
- 回收桌椅合同范本
- 简易扇灰合同范本
- 巷道围岩注浆加固施工安全技术措施
- 实验中学初一新生分班考试数学试卷附答案
- 区治安巡防队员面试题
- 施工组织设计施工总体部署完整版
- TUPSW微机控制电力专用不间断电源(UPS)系统使用说明书
- 骨质疏松诊治与中医药
- LY/T 2383-2014结构用木材强度等级
- GB/T 528-2009硫化橡胶或热塑性橡胶拉伸应力应变性能的测定
- 中日关系历史
- GB/T 15171-1994软包装件密封性能试验方法
- 2023年江苏省中学生生物学竞赛(奥赛)初赛试题和答案
评论
0/150
提交评论