跳轉到內容

實數:規範化

來自華夏公益教科書,開放的書籍,為開放的世界

論文 2 - ⇑ 資料表示基礎 ⇑

← 浮點數 浮點規範化 浮點誤差 →


在儲存數字時,我們需要以最有效的方式使用給定的空間。例如,如果我們取一個十進位制浮點數,例如

  (Planck's constant)

如果我們將它重寫為

  (Planck's constant)

那麼你可以看到表示法多佔了 2 個字元,即兩個額外的 0,即使它代表的是完全相同的數字。當你不擔心數字佔用多少字元時,這可能是可以接受的,但在二進位制和有限的計算機記憶體中,數字佔用的空間非常重要。我們需要儘可能高效的表示法。在給定的位數內,數字的規範化表示將以可能的最高精度顯示數字。總之,規範化數字

  • 只給出數字的一種表示。
  • 節省空間。
  • 在給定的位數內給出數字最精確的表示。

一般來說:當處理二進位制浮點數時,必須確保前兩位不同。也就是說



絕對



讓我們看一個例子。取一個二進位制浮點數


我們可以看到這個數字以 開頭。我們需要將它更改為 才能使它規範化。為此,我們需要將小數點向右移動一位,為了保留未規範化數字所代表的相同數字,我們需要相應地更改指數。將小數點向右移動一位來規範化數字,我們需要將指數更改為向左移動一位以進行補償。因此從當前指數中減去一


為了確保你已正確規範化,請檢查


讓我們嘗試一個更復雜的例子


為了使尾數規範化,我們需要將小數點向右移動兩位。為了保持與原始浮點數相同的數值,我們需要將指數調整為小兩位。


現在檢查新的規範化值是否與原始值相同。

總結:規範化數字
  1. 規範化左側(尾數)。
  2. 記錄它規範化所需要的“彈跳”次數。
  3. 使用以下公式計算規範化數字的指數:原始指數 – “彈跳”
  • 規範化數字以兩個不同的位開頭。
  • 確保規範化不會改變尾數的符號。
  • 規範化在給定的位數內提供了最大精度。
  • 規範化確保每個數字只有一個表示
練習:規範化問題

以下數字是否規範化?

0.010000000 111111

答案

否,因為它以 0.0 開頭

0.111111000 111111

答案

是,因為它以 0.1 開頭

1.100000010 111111

答案

否,因為它以 1.1 開頭

規範化以下數字

0 010000000 111111

答案

  1. 0.010000000 111111 -> 00.10000000 111111
  2. 向右移動一位
  3. 111111 - 1 = -1 -1 = -2 = 000010 (+2) = 111110 (-2)
00.10000000 111110 = 0.100000000 111110

0 001101000 000110

答案

  1. 0.001101000 000110 -> 000.1101000 000110
  2. 向右移動兩位
  3. 000110 - 2 = 6 - 2 = 4 = 000100 (+4)
000.1101000 000100 = 0.110100000 000100

1 111111010 000011

答案

  1. 1.111111010 000011 -> 1111111.010 000011
  2. 向右移動六位
  3. 000011 - 6 = 3 - 6 = -3 = 111101 (-3)
111111.010 111101 = 1.01000000 111101
華夏公益教科書