[問題] IEEE754的Excess問題?
各位大大您們好
小弟有個問題想請教,一般Excess Notation中 Excess為2^(n-1)
但是在IEEE754的標準中Excess則是(2^(n-1))-1
也就是說在單精度的標準中(32位元)
Exponent佔8位元,要換成10進位數字是減掉127(即((2^(8-1)-1))而非減掉128(即2^(8-1))
為何要多減一個1呢? 是跟隱藏位元有關嗎?
小弟一直想不透
謝謝各位
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 211.75.223.247
※ 文章網址: https://www.ptt.cc/bbs/Electronics/M.1437554162.A.002.html
※ 編輯: jk76818 (211.75.223.247), 07/22/2015 16:40:33
→
07/22 17:04, , 1F
07/22 17:04, 1F
謝謝這位大大,但是這跟2補數應該沒有太大的關係
我後來直接寄mail去問
有在台大開放式課程開課開計算機概論的于天立老師,以下是他回的內容
**************************************************************
jk76818你好,
謝謝來信。
這個問題其實答案可以很複雜也可以很簡單。
簡單版的答案就是"這只是一個選擇"。bias 用128 一樣可以work。
選擇127其實是有很多原因的,但並沒有任何一個原因使得用128不行。
其中一個原因如下:
ieee 754 把數字分成5種。其中inf和nan是當exp為全1時。
也就是用 127 當 bias時,exp 真正的range 是 -127 ~ 127 (128 被犧牲了)
這樣使得exp比較平衡些。
當然exp為全0時,其實也被犧牲了,但是畢竟0的確很接近2^-127。
還有另一個原因是gradual underflow…,但講起來真的很複雜…
ieee 754 為了減輕gradual underflow
(http://www.cs.rice.edu/~taha/teaching/05F/210/Labs/Lab07/gradualUnderflow.html)
的問題,決定納入denormalized 數字。
denormalized 是 exp 為全0,但mantissa不為全0。
當初設計者決定denormalized數字必需能表示1/MAX_FLOAT,而127可以達成這個目的(如
上述的平衡)
當然,為何一定要有denormalized 數字,或是為何一定要能表示1/MAX_FLOAT,這都只是
一個選擇而已。
總之,選擇127背後有些道理(其實都還滿weak的),但是用128並沒有不行。
于天立
******************************************************************
BTW 原先寄信給老師,沒有料想他會這麼快回我,甚至認為他應該不會回我
因為我不是他的學生,也不是台大的學生,加上他研究繁忙
但他兩天內就立即回了我信
真的是受寵若驚
果然是在台大學生中評價很好的老師
※ 編輯: jk76818 (211.75.223.247), 07/24/2015 18:02:29
※ 編輯: jk76818 (211.75.223.247), 07/24/2015 18:04:16
推
07/24 23:12, , 2F
07/24 23:12, 2F