n位的無符號數表示範圍為:0 ~ 2n -1
原碼
:用尾數表示真值的絕對值,符號位「0/1」對應「正/負」
若機器字長n+1位,原碼整數
的表示範圍: - ( 2n -1) ~ 2n -1
若機器字長n+1位,原碼小數
的表示範圍: - ( 1-2-n ) ~1- 2-n
反碼
:若符號位為0,則反碼與原碼相同
若符號位為1,則數值位全部取反
若機器字長n+1位,反碼整數
的表示範圍: - ( 2n -1) ~ 2n -1
若機器字長n+1位,反碼小數
的表示範圍: - ( 1-2-n ) ~1- 2-n
補碼
:正數的補碼 = 原碼
負數的補碼 = 反碼末位+1(要考慮進製)
補碼的真值0只有一種表示形式
採用補碼表示時,若符號位相同,則數值位越大,碼值越大。
★定點整數補碼 [x]補 = 1,0000000 表示 x = -27,補碼中最小的數
若機器字長n+1位,補碼整數的表示範圍:−2n ≤ x ≤ 2n −1 (比原碼多表示乙個 −2n )
定點小數補碼 [x]補 = 1.0000000 表示 x = -1
若機器字長n+1位,補碼小數的表示範圍:−1 ≤ x ≤ 1−2-n (比原碼多表示乙個 −1 )
補碼的基礎上將符號位取反
移碼全0真值最小,移碼全1真值最大;移碼表示的整數很方便對比大小
移碼的真值0只有一種表示形式
若機器字長n+1位,移碼整數的表示範圍:−2n ≤ x ≤ 2n −1 (與補碼相同)
符號位、數值位全部取反,末位+1
同[x]原求[x]補
負數補→原:①數值位取反+1;
或 ②負數補碼中,最右邊的1及其右邊同原碼。最右邊的1的左邊同反碼
符號位保持不變,僅對數值位進行移位。
正數的原碼、補碼與反碼都相同,因此移位後出現的空位均以0添之。
2.1.2.1原碼
2.1.2.2反碼
反碼的算數移位――負數的反碼數值位與原碼相反,因此負數反碼的移位運算規則如下,
右移:高位補1,低位捨棄。
左移:低位補1,高位捨棄。
2.1.2.3補碼
補碼的算數移位――負數補碼=反碼末位+1導致反碼最右邊幾個連續的1都因進製而變為0,直到進製碰到第乙個0為止。
規律――負數補碼中,最右邊的1及其右邊同原碼。最右邊的1的左邊同反碼
負數補碼的算數移位規則如下:
右移(同反碼):高位補1,低位捨棄。
左移(同原碼):低位補0,高位捨棄。
邏輯右移:高位補0,低位捨棄。
邏輯左移:低位補0,高位捨棄。
對於補碼來說,無論加法還是減法,最後都會轉變成加法,由加法器實現運算,符號位也參與運算
。補碼運算回原碼就是我們真正計算的值
,當然可能會發生溢位。
只有「正數+正數 」才會上溢(正溢位) —— 正+正=負
只有「負數+負數 」才會下溢(負溢位) —— 負+負=正
不改變資料內容,改變解釋方式
。
例如,由, signed型轉換為等長unsigned型資料時,符號位成為資料的一部分,即負數轉換為無符號數時,數值將發生變化。同理,由unsigned轉換為signed 時最高位作為符號位,也可能發生數值變化。
高位截斷,保留低位。
符號擴充套件。見本節4.4
2 2 定點數的表示和運算
定點數的表示 1 無符號數,若機器字長是8位,則表示的資料範圍是0 255 2 有符號數,通過 0 表示正號,1 表示符號,來表示資料。有符號數的機器表示有原碼,反碼,補碼,移碼。定點表示,機器數中的小數點位置是固定不變的,小數點不再使用 表示,而是約定它的位置。這裡有兩種簡單的約定,將小數點的位置...
定點數的表示
計算機中常用的資料表示格式有兩種,一是定點格式,二是浮點格式。所謂定點數和浮點數,是指在計算機中乙個數的小數點的位置是固定的還是浮動的 如果乙個數中小數點的位置是固定的,則為定點數 如果乙個數中小數點的位置是浮動的,則為浮點數。一般來說,定點格式可表示的數值的範圍有限,但要求的處理硬體比較簡單。而浮...
定點數運算程式
51c 彙編範例 1.雙位元組數取補碼 功能 r4 r5 取補碼 r4 r5 例 start mov a r5 低4位取值 r5 a cpl a 低4位取反 add a 01h a反碼加1 若溢位cy 1,否則cy 0 mov r5,a 存放低4位補碼 a r5 mov a r4 高4位取值 r4 ...