Re: [問題] 關於IEEE-754

看板Prob_Solve作者 ((short)(-15074))時間15年前 (2008/11/22 02:15), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
※ 引述《Williamkai (威 廉)》之銘言: : 為什麼這套浮點表示系統 : 最小的正數不是 : 0.0000000…00001*2^-127 = 2^-23*2^-127 = 2^-150 : 而是 : 0.0000000…00001*2^-126 = 2^-23*2^-126 = 2^-149 : 我記得exponent那格是寫00000000 : 然後使用bias of 127 指數部分是0-127=-127 : 為什麼不能用-127? 而是用-126 : 使用-127可以表示的更小的正數 : 請幫幫忙解解我的疑惑 : 我想到頭快爆炸了。 要注意喔 小數部份是有一個隱藏的"整數"位的1 所以如果能讓你用-127的話 最小的正數其實是 1.000000...0001 * 2^-127 = 2^-127 + 2^-151 (別忘了我們要留一個位置給 0 ) 而IEEE754現行系統中 正常的(normalized)數的指數只給用到-126 所以這部份最小的是 2^-126 特別處理的-127的部份 (叫做denormalized) 會把那個隱藏的1看成0 但是! 如果這時指數也是-127的話 請問2^-127這個數怎麼表示? 所以這時雖然指數寫著-127 其實意義是-126 因此 2^-127 才能表示成 0 00000000 10000000000000000000000 (即 0.1 * 2^-126 = 2^-127) 也就是說 這裡的指數-127表示說其實指數是-126 只是隱藏的1要看成0而已 以下列一下這附近的幾個數你比較一下 2^-124: 0 00000011 00000000000000000000000 2^-125: 0 00000010 00000000000000000000000 2^-126: 0 00000001 00000000000000000000000 2^-127: 0 00000000 10000000000000000000000 2^-128: 0 00000000 01000000000000000000000 2^-129: 0 00000000 00100000000000000000000 如此一來能表示的最小的正數就是 2^-149: 0 00000000 00000000000000000000001 就是你上面的第二個式子了 這樣一來 0 的表示法就很自然的進入這樣的系統: 0: 0 00000000 00000000000000000000000 即 0.0*2^-126 = 0 --- 至於指數部份全部是1的是保留表示無限大或NaN 所以能表示的最大的正數就是 (2-2^-23)*2^127: 0 11111110 11111111111111111111111 -- "LPH" is for "Let Program Heal us".... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.250.80
文章代碼(AID): #199lgaGQ (Prob_Solve)
討論串 (同標題文章)
文章代碼(AID): #199lgaGQ (Prob_Solve)