分类: C/C++
2007-01-09 17:18:47
chinaunix网友2009-11-11 14:12:36
5.5转换成二进制应该是101.1吧 转换完的浮点数应该是0 10000001 01100000 000000000000000 如有不对 请指点 转换方法: 將 17.625 換算成 float 型態. 首先, 先將 17.625 換算成 2 進位: 10001.101 (0.625 = 0.5 + 0.125 , 0.5 即 1/2 , 0.125 即 1/8) 再來將 10001.101 向右 shift 直到小數點前只剩一位 成了 1.0001101 x 2 的 4 次方 (因為向右移了 4 位). 此時, 我們要的底數和指數就出來了: 底數部份,因為小 數點前必為 1, 所以 IEEE 規定只記錄小數點後的就好, 所以此 題的底數為 0001101 . 指數部份實際為 4, 但在格式中須加上 127 , 固為 131 , 即二進位的 10000011. 綜合上列各項, 17.625 的 float 儲存格式就是: 0 10000011 00011010000000000000000
chinaunix网友2008-05-30 15:10:01
我觉得《C中浮点数的存储格式 》一文中5.5的浮点数存储格式举例有问题 如果你说的转换方法是对的话 01000000101000000000000000000000=5 而不是5.5 请核实!!! 本人正学习中,有问题可交流,但作为公布的东西一定要严谨 如果我错了请及时告诉我, QQ 65747584