實數:規範化
外觀
在儲存數字時,我們需要以最有效的方式使用給定的空間。例如,如果我們取一個十進位制浮點數,例如
(Planck's constant)
如果我們將它重寫為
(Planck's constant)
那麼你可以看到表示法多佔了 2 個字元,即兩個額外的 0,即使它代表的是完全相同的數字。當你不擔心數字佔用多少字元時,這可能是可以接受的,但在二進位制和有限的計算機記憶體中,數字佔用的空間非常重要。我們需要儘可能高效的表示法。在給定的位數內,數字的規範化表示將以可能的最高精度顯示數字。總之,規範化數字
- 只給出數字的一種表示。
- 節省空間。
- 在給定的位數內給出數字最精確的表示。
一般來說:當處理二進位制浮點數時,必須確保前兩位不同。也就是說
絕對 不
讓我們看一個例子。取一個二進位制浮點數
我們可以看到這個數字以 開頭。我們需要將它更改為 才能使它規範化。為此,我們需要將小數點向右移動一位,為了保留未規範化數字所代表的相同數字,我們需要相應地更改指數。將小數點向右移動一位來規範化數字,我們需要將指數更改為向左移動一位以進行補償。因此從當前指數中減去一
為了確保你已正確規範化,請檢查
讓我們嘗試一個更復雜的例子
為了使尾數規範化,我們需要將小數點向右移動兩位。為了保持與原始浮點數相同的數值,我們需要將指數調整為小兩位。
現在檢查新的規範化值是否與原始值相同。
| 確保規範化數字不會改變符號位。例如 0.0001 應該變為 0.100,而不是 1.000。 |
|
總結:規範化數字
|
|
練習:規範化問題 以下數字是否規範化? 0.010000000 111111 答案 否,因為它以 0.0 開頭 0.111111000 111111 答案 是,因為它以 0.1 開頭 1.100000010 111111 答案 否,因為它以 1.1 開頭 規範化以下數字 0 010000000 111111 答案
00.10000000 111110 = 0.100000000 111110 0 001101000 000110 答案
000.1101000 000100 = 0.110100000 000100 1 111111010 000011 答案
111111.010 111101 = 1.01000000 111101 |