[問題] IEEE 754 轉換表示

看板C_and_CPP (C/C++)作者 (lovefo)時間14年前 (2012/04/18 00:14), 編輯推噓2(206)
留言8則, 3人參與, 最新討論串1/2 (看更多)
今天考了一個IEEE 轉換的問題 想了一整天 還是沒有解答... 是這樣 將 浮點數 0.406982 轉成適合 16 bit 的IEEE 754格式(s=1,e=5.f=10) 我將 0.406982*2 = 0.813964 0.813964*2 = 1.627928 0.627928*2 = 1.255856 0.255856*2 = 0.511712 0.511712*2 = 1.023424 0.023424*2 = 0.046848 0.046848*2 = 0.093696 0.093696*2 = 0.187392 0.187392*2 = 0.374784 0.374784*2 = 0.749568 0.749568*2 = 1.499136 0.499136*2 = 0.998272 0.998272*2 = 1.996544 . . 0.406982 = 0.0110100000101 = 1.10100000101*2^-2 所以可以得知 e = 13 , f = 1010000010 = 642 2 10 但 助教給答案卻是 e = 13 , f = 643 我不知道哪裡想錯了 我在想 是不是 因為 助教用程式跑的 所以有精準度的問題?? 謝謝各位解答了 謝謝 -- 一切.... 似乎不再那麼重要.... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.240.228.47 ※ 編輯: lovefo 來自: 123.240.228.47 (04/18 00:15)

04/18 00:15, , 1F
我猜會被砍文...
04/18 00:15, 1F

04/18 00:37, , 2F
猜的~往下算時,最後的bit是1,進位成 0.0110100000110
04/18 00:37, 2F

04/19 01:07, , 3F
問題在於, 你的計算不夠精確, 你只計算了13位, 等於後面
04/19 01:07, 3F

04/19 01:08, , 4F
都被你捨棄了, 所以再最後做進捨位時就出現了誤差@_@"
04/19 01:08, 4F

04/19 01:10, , 5F
印象中需要算到滿足位數加兩位, 並記錄兩位以後是否還有
04/19 01:10, 5F

04/19 01:11, , 6F
值, 然後00, 01捨, 11入, 10(有剩值)也入, 10(後全0)為
04/19 01:11, 6F

04/19 01:12, , 7F
特別的偶成雙規則(至少小弟記得32bit float是這樣啦XD)
04/19 01:12, 7F

04/19 01:17, , 8F
仔細想, 多算一位, 但進捨位時把餘數一起考慮就好了Orz
04/19 01:17, 8F
文章代碼(AID): #1FZPRtpU (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1FZPRtpU (C_and_CPP)