



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单双精度浮点数的IEEE标准格式目前大多数高级语言(包括C)都按照IEEE-754标准来规定浮点数的存储格式,IEEE754规定,单精度浮点数用4字节存储,双精度浮点数用 8字节存储,分为三个部分:符号位、阶和尾数。阶即指数,尾数即有效小数位数。单精度格式阶占8位,尾数占24位,符号位1位,双精度则为11为阶,53 位尾数和1位符号位,如下图所示:单精度浮点数存储格式s指数尾数 3130 23 22 0双精度浮点数存储格式s指数尾数 63 62 52 51 0 细心的人会发现,单双精度各部分所占字节数量比实际存储格式都了一位,的确是这样,事实是,尾数部分包括了一位隐藏位,允许只存储23位就可以表示24位 尾数,默认的1位是规格化浮点数的第一位,当规格化一个浮点数时,总是调整它使其值大于等于1而小于2,亦即个位总是为1。例如1100B,对其规格化的 结果为1.1乘以2的三次方,但个位1并不存储在23位尾数部分内,这个1是默认位。 阶以移码的形式存储。对于单精度浮点数,偏移量为127(7FH),而双精度的偏移量为1023(3FFH)。存储浮点数的阶码之前,偏移量要先加到阶码 上。前面例子中,阶为2的三次方,在单精度浮点数中,移码后的结果为127+3即130(82H),双精度为1026(402H)。 浮点数有两个例外。数0.0存储为全零。无限大数的阶码存储为全1,尾数部分全零。符号位指示正无穷或者负无穷。下面举几个例子:单精度浮点数十进制规格化符号移阶码尾数 -12-1.1x231100000101000000 00000000 000000000.251.0x2-20011111010000000 00000000 00000000所有字节在内存中的排列顺序,intel的cpu按little endian顺序,motorola的cpu按big endian顺序排列。IEEE754标准的一个规格化 32位浮点数x的真值可表示为x=(-1)S*(1.M)*2(E-127) e=E12731 30 230S E M例1若浮点数x的754标准存储格式为(41360000)16,求其浮点数的十进制数值。解:将16进制展开后,可得二进制数格式为0 100,0001,0 011,0110,0000,0000,0000,0000S E M指数e=100,0001,001111111=00000011=(3)10包含隐藏位1的尾数1.M=1.011,0110,0000,0000,0000,0000于是有 x=(-1)0*(1.M)*2(E-127) =+(1.011011)2*23 =(11.375)10例2将数(20.59375)10转化为754标准的32位浮点数的二进制存储格式。解:首先分别将整数部分和小数部分转换成二进制(20.59375)10=+(10100.10011)2然后移动小数点使其在1,2位之间10100.10011=1.010010011*24 e=4于是得到:S=0,E=e+127=131,M=010010011最后得到32位浮点数的二进制存储格式为0 100,0001,1 010,0100,1100,0000,0000,0000=(41A4C000)16从存储结构和算法上来讲,double和float是一样的,不一样的地方仅仅是float是32位的,double是64位的,所以double能存储更高的精度。 任何数据在内存中都是以二进制(0或1)顺序存储的,每一个1或0被称为1位,而在x86CPU上一个字节是8位。比如一个16位(2字节)的 shortint型变量的值是1000,那么它的二进制表达就是:0000001111101000。由于IntelCPU的架构原因,它是按字节 倒序存储的,那么就因该是这样:1110100000000011,这就是定点数1000在内存中的结构。目前C/C+编译器标准都遵照IEEE制定的浮点数表示法来进行float,double运算。这种结构是一种科学计数法,用符号、指数和尾数来表示,底数定为2即把一个浮点数表示为尾数乘以2的指数次方再添上符号。下面是具体的规格:符号位阶码尾数长度float182332double1115264临时数1156480由于通常C编译器默认浮点数是double型的,下面以double为例:共计64位,折合8字节。由最高到最低位分别是第63、62、61、0位:最高位63位是符号位,1表示该数为负,0正;62-52位,一共11位是指数位;51-0位,一共52位是尾数位。P按照IEEE浮点数表示法,下面将把double型浮点数38414.4转换为十六进制代码。把整数部和小数部分开处理:整数部直接化十六进制:960E。小数的处理:0.4=0.5*0+0.25*1+0.125*1+0.0625*0+实际上这永远算不完!这就是著名的浮点数精度问题。所以直到加上前面的整数部分算够53位就行了(隐藏位技术:最高位的1不写入内存)。如果你够耐心,手工算到53位那么因该是:38414.4(10)=1001011000001110.0110101010101010101010101010101010101(2)(注:实际上我也没算到那么位,这个也只是意思一下,所谓的55555555CDC1E240对应却是38414.4166666666642)科学记数法为:1.001乘以2的15次方。指数为15!于是来看阶码,一共11位,可以表示范围是-10241023。因为指数可以为负,为了便于计算,规定都先加上1023,在这里
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中医食疗学试题及答案
- 中医水平测试题目及答案
- 2025年事业单位工勤技能-安徽-安徽经济岗位工三级(高级工)历年参考题库含答案解析
- 2025年事业单位工勤技能-安徽-安徽水工监测工四级(中级工)历年参考题库含答案解析
- Folic-acid-OVA-生命科学试剂-MCE
- 压力之下如何处理婚姻危机?面试题及应对策略
- 售票员工作个人心得体会
- 煤矿技术员考试试卷及答案
- 护理课件酒精擦浴
- 电工职业资格考试全攻略
- 班组长团队管理能力考试题库-上(选择题)
- 医学精美课件《颈肩痛腰腿痛》讲座
- 厨房设备备品备件、标准件及易损件清单
- 心源性晕厥的查房
- 第31届全国中学生物理竞赛决赛理论考试试题与参考答案
- 中医适宜技术老年病
- 光伏电站巡检记录表完整
- (高清版)DZT 0275.5-2015 岩矿鉴定技术规范 第5部分:矿石光片鉴定
- 《养老护理员》-课件:协助老年人洗浴及清洁会阴部
- 2024年公安局招考警务辅助人员考试题库附答案
- 《幕墙工程UHPC单元体幕墙施工专项方案》
评论
0/150
提交评论