[C語言程序設計]C語言中的“標準化指數形式”和 “規範化的指數形式” 是否相同

我在看譚浩強.C語言程序設計(第2版)時,在P182.1節中寫到:

 

  所謂“標準化指數形式”是指這樣的指數:其數值部分是一個小數,小數點前的數字是零,小數點後的第一位數字不是零。一個實數可以有多種指數表示形式,但只有一種屬於標準化指數形式。

0.123456×103是標準化指數形式。

實數在計算機內存中按照標準化指數形式存儲。

 

P27中又寫到:

 

2.1節中已說明了什麼是“規範化的指數形式”(其實沒有說明,只說了上面摘錄的“標準化指數形式”)。一個實數在用指數形式輸出時,是按規範化的指數形式輸出的。例如,指定實數5689.65按指數形式(%e格式)輸出,輸出的形式只能是5.68965e+003,而不會是0.568965e+00456.8965e+002.

 

從上面2段話來看,我認爲C語言中的“標準化指數形式”和 “規範化的指數形式” 應該是不同的概念,“標準化指數形式”用於在存儲,“規範化的指數形式”用於輸出。

我又GOOGLE了下,發現大多數的情況是把“標準化指數形式”和 “規範化的指數形式”混爲一談,都說成是:小數點前必須有而且只有一位非零數字,也即前面所說的“規範化的指數形式”。

但我也看到了這樣的一個問題:規範化指數形式本來是1.23456e3的,爲什麼譚浩強的書上說實型數據在內存中以規範化指數形式存放,且小數部分是0.123456(十進制表達),而不是1.23456呢?(我認爲這個問題中的“規範化指數”應改爲“標準化指數”)其中有人這樣回答:1.23456要二進制存放需分別存整數部和小數部,0.123456則只需存小數部,這樣在佔用相同字節的情況下,後一種方法可容納更大精度的浮點數. 我認爲上面的回答有道理(具體我也沒深入弄懂),好像也證明了我的觀點:C語言中的“標準化指數形式”和 “規範化的指數形式” 應該是不同的概念,“標準化指數形式”用於在存儲,“規範化的指數形式”用於輸出。

以下是關於更深層次的研究資料,我沒看懂(其實我沒有認真看,只是掃了幾眼),我現在沒有時間看得太深了啊,自己的知識水平也不允許。

基於IEEE 754的浮點數存儲格式分析研究

    http://www.studa.net/yingyong/080502/15414593.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章