作者blueblueChen (蓝蓝欠)
看板C_and_CPP
标题[问题] 二进制的浮点数转回十进位
时间Sat Jul 23 08:29:23 2016
最近有需要,发现网路上都没有这资讯,只有些操作页面,直接告诉你答案
想要把他写下来成为自己的 C library
12.625 => 1100.101 = 1.100101 × 2^3 --> 我如果从下面反推到这一步,我该怎麽
知道 (1).100101,最前面为1?
.. 因为最下面的十六进位,只有显示出小数
点之後阿
..
1100 0001 0100 1010 0000 0000 0000 0000
C14A0000
这是将十进制的浮点数转成十六进制,我现在要反推回去求回浮点数
在 第一条式子,12.625 => 1100.101 = 1.100101 × 2^3
我突然卡住,不知道该怎麽将 (0.101)2 转回 (0.625)10
有先进提点一下吗? 谢谢。
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 58.115.110.28
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1469233766.A.671.html
1F:→ blueblueChen: 好像是用1*2^(-1)+0*2^(-2)+1*2^(-3) 07/23 09:07
2F:→ blueblueChen: 可是这样算出来是0.875.. 07/23 09:07
3F:→ blueblueChen: 阿...对不起我多算了 07/23 09:08
※ 编辑: blueblueChen (58.115.110.28), 07/23/2016 09:22:12
※ 编辑: blueblueChen (58.115.110.28), 07/23/2016 09:23:10
4F:推 kyuudonut: normalize 之後必为1 因为二进位只有1这个选择 07/23 10:38
5F:→ kyuudonut: 所以没有必要存 07/23 10:38
6F:→ longlongint: IEEE 754 07/23 12:51
7F:→ longlongint: 实作上其实直接把binary写进去float 通常会成功 07/23 12:53