2 2定點數的表示與運算

2021-10-12 03:15:04 字數 2621 閱讀 2251

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 ...