2016-02-28 61 views
2

在我的計算機體系結構課程中,我們使用14位二進制模型(1位爲符號,5位爲指數,8位爲尾數)。當輸入指數時,我的指導員讓我們加16來抵消它(偏差16)爲什麼我們使用16偏差?是否因爲5位只能表示多達31個數字?如果是這樣,請詳細說明並比較使用指數時使用127偏差的IEEE單精度。最後,如果有人能夠給我一個關於這方面和二進制使用的偏見的明確定義,我將不勝感激。如果我說的內容不清楚,請發表評論。爲什麼教科書中使用的二進制十四位浮點模型使用偏差16,因爲IEEE單精度使用偏差127?

+0

任意選擇,沒有參照的指數偏壓使得IEEE漂浮可比作爲符號/幅值的整數。這對CPU內部可能是有用的,所以他們可以重用他們的比較硬件的浮點數。這對於像['nextafterf'](http://en.cppreference.com/w/c/numeric/math/nextafter)之類的float bithack函數也很有用。 –

回答

3

IEEE 754二進制浮點格式遵循指數偏差的簡單模式。當指數爲p位時,偏差爲2^{p-1}-1。這個指數具有相同數量的正負指數。

對於單精度浮標p爲8,因此偏差爲127.對於您的格式p爲5且偏差爲15.也許您的導師將偏差改爲16,因爲格式不支持denorm,infinity和NaN 。

3

表示一系列數字的方法有多種,包括正數和負數。增加偏差特別靈活。範圍[-n, m)可以通過將n添加到每個數字來表示,將其映射到範圍[0, m+n)

該系統用於我已經使用的所有浮點系統中的指數。它簡化了一些比較,因爲非符號位的更大的無符號二進制值表示浮點的更大絕對量值,除了特殊值(例如NaN)。

對於浮點型指數,偏差大約是指數範圍的一半,因此大約一半的值位於零的每一邊。精確的平衡是不可能的,因爲有偶數個位模式,並且一個用於零。

正如在another answer中討論的那樣,IEEE754標準對5位指數使用15的偏差。

有選購16幾個可能的原因:

  • 有一些實際的技術原因,如不治療31專項的建議之一。
  • 偏差16使得1.0的表示特別簡單,只有一個非零位。
  • 與IEEE 754略有不同有助於說服學生浮點並不意味着IEEE 754.還有其他浮點格式。
  • 與IEEE 754略有不同可能會阻止使用現有工具來獲得練習結果而不理解表示如何工作。
  • 它是爲指數偏置合理值中的一個,以IEEE 754