为了正常的体验网站,请在浏览器设置里面开启Javascript功能!
首页 > 二进制浮点数 

二进制浮点数 

2018-02-17 4页 doc 36KB 14阅读

用户头像

is_882336

暂无简介

举报
二进制浮点数 二进制浮点数  整数怎样转2进制,小数怎样转2进制就不说了。 12.5: 1. 整数部分12,二进制为1100; 小数部分0.5, 二进制是.1,先把他们连起来,从第一个1数起取24位(后面补0): 1100.10000000000000000000 这部分是有效数字。(把小数点前后两部分连起来再取掉头前的1,就是尾数) 2. 把小数点移到第一个1的后面,需要左移3位, 加上偏移量127:127+3=130,二进制是10000010,这是阶码。 3. -12.5是负数,所以符号位是1。把符号位,阶码和尾数连起来。注意,...
二进制浮点数 
二进制浮点数  整数怎样转2进制,小数怎样转2进制就不说了。 12.5: 1. 整数部分12,二进制为1100; 小数部分0.5, 二进制是.1,先把他们连起来,从第一个1数起取24位(后面补0): 1100.10000000000000000000 这部分是有效数字。(把小数点前后两部分连起来再取掉头前的1,就是尾数) 2. 把小数点移到第一个1的后面,需要左移3位, 加上偏移量127:127+3=130,二进制是10000010,这是阶码。 3. -12.5是负数,所以符号位是1。把符号位,阶码和尾数连起来。注意,尾数的第一位总是1,所以规定不存这一位的1,只取后23位: 1 10000010 10010000000000000000000 把这32位按8位一节整理一下,得: 11000001 01001000 00000000 00000000 就是十六进制的 C1480000. 2.025675 1. 整数部分2,二进制为10; 小数部分0.025675, 二进制是.0000011010010010101001,先把他们连起来,从第一个1数起取24位(后面补0): 10.0000011010010010101001 这部分是有效数字。把小数点前后两部分连起来再取掉头前的1,就是尾数: 00000011010010010101001 2. 把小数点移到第一个1的后面,左移了1位, 加上偏移量127:127+1=128,二进制是10000000,这是阶码。 3. 2.025675是正数,所以符号位是0。把符号位,阶码和尾数连起来: 0 10000000 00000011010010010101001 把这32位按8位一节整理一下,得: 01000000 00000001 10100100 10101001 就是十六进制的 4001A4A9. -1.99744 还需要详细说吗? 如果只有小数部分,那么需要右移小数点. 比如右移3位才能放到第一个1的后面, 阶码就是127-3=124. 补充一个浮点二进制数手工转换成十进制数的例子: 假设浮点二进制数是 1011 1101 0100 0000 0000 0000 0000 0000 按1,8,23位分成三段: 1 01111010 10000000000000000000000 最后一段是尾数。前面加上"1.", 就是 1.10000000000000000000000 下面确定小数点位置。阶码是01111010,加上00000101才是01111111(127), 所以他减去127的偏移量得-5。(或者化成十进制得122,122-127=-5)。 因此尾数1.10(后面的0不写了)是小数点右移5位的结果。要复原它就要左移5位小数点,得0.0000110, 即十进制的0.046875 最后是符号:1代表负数,所以最后的结果是 -0.046875 还要注意其他机器的浮点数表示方法可能与此不同. 不能任意移植. 根据国际标准IEEE 754,任意一个二进制浮点数V可以表示成下面的形式: (1)(-1)^s表示符号位,当s=0,V为正数;当s=1,V为负数。 (2)M表示有效数字,大于等于1,小于2。 (3)2^E表示指数位。 举例来说,十进制的5.0,写成二进制是101.0,相当于1.01×2^2。那么,按照上面V的,可以得出s=0,M=1.01,E=2。 十进制的-5.0,写成二进制是-101.0,相当于-1.01×2^2。那么,s=1,M=1.01,E=2。 IEEE 754规定,对于32位的浮点数,最高的1位是符号位s,接着的8位是指数E,剩下的23位为有效数字M。 对于64位的浮点数,最高的1位是符号位S,接着的11位是指数E,剩下的52位为有效数字M。 5. IEEE 754对有效数字M和指数E,还有一些特别规定。 前面说过,1?M<2,也就是说,M可以写成1.xxxxxx的形式,其中xxxxxx表示小数部分。IEEE 754规定,在计算机内部保存M时,默认这个数的第一位总是1,因此可以被舍去,只保存后面的xxxxxx部分。比如保存1.01的时候,只保存01,等到读取的时候,再把第一位的1加上去。这样做的目的,是节省1位有效数字。以32位浮点数为例,留给M只有23位,将第一位的1舍去以后,等于可以保存24位有效数字。 至于指数E,情况就比较复杂。 首先,E为一个无符号整数(unsigned int)。这意味着,如果E为8位,它的取值范围为0~255; 如果E为11位,它的取值范围为0~2047。但是,我们知道,科学计数法中的E是可以出现负数的,所以IEEE 754规定,E的真实值必须再减去一个中间数,对于8位的E,这个中间数是127;对于11位的E,这个中间数是1023。 比如,2^10的E是10,所以保存成32位浮点数时,必须保存成10+127=137,即10001001。 然后,指数E还可以再分成三种情况: (1)E不全为0或不全为1。这时,浮点数就采用上面的规则表示,即指数E的计算值减去127(或1023),得到真实值,再将有效数字M前加上第一位的1。 (2)E全为0。这时,浮点数的指数E等于1-127(或者1-1023),有效数字M不再加上第一位的1,而是还原为0.xxxxxx的小数。这样做是为了表示?0,以及接近于0的很小的数字。 (3)E全为1。这时,如果有效数字M全为0,表示?无穷大(正负取决于符号位s);如果有效数字M不全为0,表示这个数不是一个数(NaN)。
/
本文档为【二进制浮点数 】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索