繁体中文
高级搜索
 
首页 | 电子技术应用 | 行业最新动态 | 行业最新产品 | 软件资料下载 | 电路图纸欣赏 | 博客文章精选 | 电子精品论坛 | 电子技术贴吧

当前位置:首页 >> 博客文章精选 >> 其他-------博客 >> 浮点数表示方法
浮点数表示方法
作者:   来源: 发表时间:2007-02-07  字号:  

PS:真是学的不如忘的快,今天用到了,竟然都忘光了,所以就整理了一下

单精度浮点数有32位,双精度浮点数有64位,扩展浮点数有80位。

在单精度浮点数中,主要有符号位(S)、指数(E8位、尾数或者小数部分包含后面的23位。
共计32位,折合4字节
由最高到最低位分别是第313029……0
31
位是符号位,1表示该数为负,0反之。
30-23
位,一共8位是指数位。
22-0
位,一共23位是尾数位。

现在让我们按照IEEE浮点数表示法,一步步的将float型浮点数12345.0f转换为二进制代码。在处理这种不带小数的浮点数时,直接将整数部转化为二进制表示:1 11100010 01000000然后将小数点向左移,一直移到离最高位只有1位,就是最高位的11.11100010010000000一共移动了16位,在布尔运算中小数点每向左移一位就等于在以2为底的科学计算法表示中指数 1,所以原数就等于这样:1.11100010010000000 * ( 2 ^ 16 )好了,现在我们要的尾数和指数都出来了。最高位的1一般就直接省去了

这样尾数的二进制就变成了:11100010010000000最后在尾数的后面补0,一直到补够23位:11100010010000000000000

再回来看指数,一共8位,可以表示范围是0 - 255的无符号整数,也可以表示-128 - 127的有符号整数。但因为指数是可以为负的,所以为了统一把十进制的整数化为二进制时,都先加上127,在这里,我们的16加上127后就变成了143,二进制表示为:10001111
12345.0f
这个数是正的,所以符号位是0,那么我们按照前面讲的格式把它拼起来:

S E F
0 10001111 11100010010000000000000
例子2:把浮点数转化为十进制数

S E F

1 10010001 10001110001000000000000

符号位是1 偏移指数 10010001145 最后的指数实际为14512718

最后的结果就为(-1)(1.10001110001)(2^18

因为指数在-126 128之间的任意数,所以极大的和极小的都可以表示出来。

浮点数的这两种格式有两种例外:数0.0由全0来表示,而无穷大数的指数则由全1来表示,尾数用全0来表示。

IEEE754三种浮点数的格式参考
数符(s) 阶码(E) 尾数(M) 总位数 十六进制 十进制
短实数
1 8 23 32 7FH 127 1~254
长实数
1 11 52 64 3FFH 1023 1~2046
临时实数 1 15 64 80 3FFFH 16383 1~32766

参考文献:http://it.icxo.com/htmlnews/2004/09/01/314496.htm

http://www.lwlm.com/show.aspx?id=26385&cid=25


!注意:如果您发现此文章出现影响您的阅读的状况,请从浏览器地址栏里复制本文的链接到留言本报告给站长解决!
  • 上一篇: 让我们一起认识手机辐射
  • 下一篇: IBM采用自成形材料绝缘 芯片提速三分之一

  • >> 联系我们请给我们留言·留言本
    本站所有提供的信息软件资料均来自网络,版权及著作权归原作者所有,如果无意中侵犯了您的相关权利或触及法律法规,请给我们留言, 我们将在24小时内删除。
      浙ICP备05071687号  电子技术精品网