看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《kuku321 (halipapon)》之銘言: : 開發平台(Platform): C++ : 額外使用到的函數庫(Library Used): OpenGL : 問題(Question): : 不太知道IEEE754的問題該去哪問,如果不符版旨請告知 : 我再看要移去數學版還是哪邊,不過好像也不是該拿去數學版的問題orz : 我的程式功能會在一個浮點數中的尾數部分後9個bit藏資料改值 : 因sign bit跟exponent bits不管是多少,fraction bits前頭都預設為1 : 所以我的想法是我在fraction bits所做的更動最大會有一個比例限制 : 應該不會超過原本數值的某個比例 : 例如一個浮點數表示成IEEE754格式如下 : 0 10000110 00111011010000011010100 : 而我們最多就是更動後9個bits,所以可視為數值改變量不超過 : 0 10000110 00111011010001011010100 : 也就是變動數值量一定在第10個bit以下 : 這個變動量對於原本數值的最大失真率有辦法計算出來嗎? : 因為拜GOOGLE不太知道什麼關鍵字能求到相關資料 : 又或是有相關論文在討論類似議題的能推薦? 把 IEEE 表示法理解成科學記號會好懂一點 以 float 為例 它的 mantissa (你所謂的 fraction bits) 是 23 bit 這代表在這個科學記號 1.xxxxxxx*2^exp 當中 後面的 xxx 有 23 位二進位 因此它的最後 9 個 bit 就是小數點後第 15 個二進位開始: 1.xxxxx xxxxx xxxxx xxxxx xxx ^ 所以誤差就會約是原數的 2^-15 = 1/32768 ≒ 3*10^-5 倍 -- 'You've sort of made up for it tonight,' said Harry. 'Getting the sword. Finishing the Horcrux. Saving my life.' 'That makes me sound a lot cooler then I was,' Ron mumbled. 'Stuff like that always sounds cooler then it really was,' said Harry. 'I've been trying to tell you that for years.' -- Harry Potter and the Deathly Hollows, P.308 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 180.218.108.125
kuku321:喔喔,感謝解答! 今天trace code看著一堆IEEE754整個昏頭 01/03 19:05
kuku321:腦袋打結一職網後面幾個bit去想,卻沒想到從前面看才是問題 01/03 19:06
kuku321:所在orz 01/03 19:06