詳解 有符號定點小數 的補碼錶示

    最近在讀《深入理解計算機系統》(蘭德爾 E. 布萊恩特),理解定點小數的補碼錶示時繞了些彎路,在這裏記下來,以作鞏固。

概念補充

    補碼(Two's complement)、反碼(Ones' Complement)、原碼(Sign Magnitude):

    注意,補碼和反碼中,撇號的位置不同。

    術語補碼來源於這樣一個情況,對於非負數x,我們用2ⁿ - x(這裏只有一個2)來計算-x的n位表示;

    術語反碼來源於這樣一個屬性,我們用[111...1] - x(這裏有很多個1)來計算-x的反碼錶示。

    原碼、反碼、補碼規則編碼的二進制形式的有符號數和其實際值的轉換公式:

    假設有一個有符號的二進制的數據: ,則其所表示的實際值爲:

    原碼:   

    反碼:

    補碼:

定點小數 

    定點小數即純小數,小數點的位置固定在最高有效數位之前、符號位之後,如圖1所示。定點小數的小數點位置是隱含約定的,小數點並不需要真正地佔據一個bit。

圖1 定點小數格式

    當 Xs = 0 時,該小數爲正值,其原碼和補碼錶示的形式相同

    其中,

    ⑴ 絕對值最大的正小數爲:

    其實際值等於(通過移項及合併同類項,可知該等式成立): 

    ⑵ 絕對值最小的正小數爲: 

    其實際值等於: 

    以8bit數爲例,最大正小數爲 0.111 1111 = 1 - 2⁻⁷;最小正小數爲 0.000 0001 = 2⁻⁷

    當 Xs = 1 時,該小數爲負值,有原碼和補碼兩種表示形式(以下形式包含Xs位)。 

    ⑴ 絕對值最大的負小數

        ① 原碼錶示

         ② 補碼錶示

    ⑵ 絕對值最小的負小數

        ① 原碼錶示

         ② 補碼錶示

    可見,定點負小數的原碼錶示範圍爲: -(1 - 2⁻ⁿ) ~ -2⁻ⁿ;其補碼錶示範圍爲:-1 ~ -2⁻ⁿ。且n值越大,精度越高。

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