Re: [問題] 座標於IEEE754中變動所造成失真率

看板C_and_CPP作者 (杇瑣)時間13年前 (2013/01/03 18:57), 編輯推噓1(102)
留言3則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《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

01/03 19:05, , 1F
喔喔,感謝解答! 今天trace code看著一堆IEEE754整個昏頭
01/03 19:05, 1F

01/03 19:06, , 2F
腦袋打結一職網後面幾個bit去想,卻沒想到從前面看才是問題
01/03 19:06, 2F

01/03 19:06, , 3F
所在orz
01/03 19:06, 3F
文章代碼(AID): #1GvMGB3c (C_and_CPP)
文章代碼(AID): #1GvMGB3c (C_and_CPP)