2013-06-28 95 views
0

所以在24位浮點的背景下,我有以下問題:24位浮點指數

如果我想使用更多或更少位的指數來修改浮點。例如,我可能想要使用9位指數和15位尾數。如果我想要使用代表1728 和191744 的單個格式,多少指數位最合適?

對於1728 二進制代表。是11011000000,所以我的指數是138(10 + 128),所以我想用8位來表示指數138(10001010)?

回答

3

構建非標準浮點格式時,分配給指數或有效數的位數取決於您自己的需要。做什麼爲你服務。指數偏差也可以選擇爲您服務。除了數學和邏輯的要求之外,制定它時沒有規則。

您顯示的兩個數字1728和191744需要在有效數字中有十個顯式位(存儲九個),因爲191744開始於位1011101011 。指數(給定一個歸一化爲[1,2]的有效數)將是10和17,所以你需要能夠在指數字段中編碼八個值。但是,如果要爲無窮大/ NaN保留一個指數編碼,則需要九個值。所以你的指數需要四位。 (例如,你可以使用偏差爲10的四位,這將是不尋常的,但並非不可能,所以0000表示指數10和0111 表示指數17.這將使1728成爲次正態數)。因此, ,代表1728和191744需要一個符號位,四個指數位和九個有效位。這留下了十分之一的分配給你想要的任何方式。

自定義浮點格式通常僅用於存儲,並且僅在內存使用至關重要時纔有用。在任何具有浮點支持的硬件上,本地浮點格式比自定義格式的軟件實現要快得多。所以通常最好在從存儲器讀取時將自定義格式轉換爲硬件支持的格式,以硬件格式執行所有計算(包括臨時將中間值存儲到存儲器),並轉換回之前的自定義格式以長期儲存。


有效數字是優選的術語,而不是尾數。 Mantissas是對數(對數的小數部分),而有效數是線性的(浮點數的小數部分)。

0

您正在應用循環邏輯。指數10存儲爲10 + 128 BECAUSE 128 = 2^7,這是你的8位指數字段的一半。如果你使用了5位指數字段,你可以存儲指數-16到+16,指數10將被存儲爲11010(26)。

+0

Ahhhhh,這很有道理,謝謝。 – user77708