128的補碼及原碼 反碼 補碼

2021-10-02 05:53:06 字數 2331 閱讀 4252

乙個位元組佔8位;

乙個字長為n的機器數能表示不同的數字的個數是固定的2^n個,n=8時2^n=256;

用來表示有符號數,數的範圍就是 -2^(n-1) ~ 2^(n-1)-1,n=8時,這個範圍就是 -128 ~ +127。

用來表示無符號數,就不需要用一位來表示符號位,n位機器數全部用來表示是數值,這時表示數的範圍就是0~2^n-1,n=8時這個範圍就是0~255 。

原碼原碼是計算機機器數中最簡單的一種形式,數值位就是真值的絕對值,符號位位「0」時表示正數,符號位為「1」時表示負數,原碼又稱帶符號的絕對值。為了方便整數和小數區別,整數的符號位與數值位之間用「,」隔開,小數的符號位與數值位之間用「.」隔開。

根據2個定義可以看出,原碼的整數和小數中「0」的表示形式各有2種,「+0」和「-0」不一樣,以8位機器數為例,整數的「+0」原碼為0,0000000;整數的「-0」原碼為1,0000000;小數的「+0」原碼為0.0000000,小數的「-0」原碼為1.0000000。滿足條件的數,帶入定義裡面計算機,主要機器數字,直接計算得到。

碼跟原碼是正數時,一樣;負數時,反碼就是原碼符號位除外,其他位按位取反

在計算機系統中,數值一律用補碼來表示和儲存。原因在於,使用補碼,可以將符號位和數值域統一處理;同時,加法和減法也可以統一處理。

求取補碼,就按照定義的規定,負數採用「模減去絕對值」的方法來求,這是求補數的通用方法,適合於各種進製、各種大小的數字。

已知乙個數 x,其 8 位字長的補碼定義為:

/ x 0 <= x <= +127 ;正數和0的補碼,就是該數字本身

[x]補 = |

\ 2^8 -|x| -128 <= x < 0 ;負數的補碼,就是用 1 0000 0000,減去該數字的絕對值

例如 x = -126,其補碼為 1000 0010,計算方法如下:

1 0000 0000

- 0111 1110

-----------

1000 0010

可以看出,按照補碼的定義來求補碼,概念十分清晰,方法、步驟也是十分簡單的。

應用補碼進行計算

用補碼計算:83-25=58。

83  ---都變成補碼,再用加法運算-->  0101 0011

- 25  -> 1 0000 0000 - 0001 1001-> + 1110 0111

-----          --------

58  <--忽略進製1,結果就是正確的--[1] 0011 1010

a-b=a-b+mod=a+(mod-b)補碼

(1) 已知原碼,求補碼。

例:已知某數x的原碼為10110100b,試求x的補碼和反碼。

解:由[x]原=10110100b知,x為負數。求其反碼時,符號位不變,數值部分按位求反;求其補碼時,再在其反碼的末位加1。

1 0 1 1 0 1 0 0 原碼

1 1 0 0 1 0 1 1 反碼,符號位不變,數值位取反

1 +1

1 1 0 0 1 1 00 補碼

故:[x]補=11001100b,[x]反=11001101b。

(2) 已知補碼,求原碼。

規則1:已知乙個數的補碼,求原碼的操作其實就是對該補碼再求補碼

⑴如果補碼的符號位為「0」,表示是乙個正數,其原碼就是補碼。

⑵如果補碼的符號位為「1」,表示是乙個負數,那麼求給定的這個補碼的補碼就是要求的原碼。

例:已知乙個補碼為11111001,則原碼是10000111(-7)。

因為符號位為「1」,表示是乙個負數,所以該位不變,仍為「1」。

其餘七位1111001取反後為0000110;再加1,所以是10000111。

規則2:遞推法

分析:按照求負數補碼的逆過程,數值部分應是最低位減1,然後取反。但是對二進位制數來說,先減1後取反和先取反後加1得到的結果是一樣的,故仍可採用取反加1 有方法。

例:已知某數x的補碼11101110b,試求其原碼。

解:由[x]補=11101110b知,x為負數。

採用逆推法

1 1 1 0 1 1 1 0 補碼

1 1 1 0 1 1 0 1 反碼(末位減1)

1 0 0 1 0 0 1 0 原碼(符號位不變,數值位取反)

補碼的理解(-128的補碼解釋)

原碼、反碼和補碼

原碼 反碼 補碼

正數 原碼 反碼 補碼一樣 7 原 0 0000111 b 7 反 0 0000111 b 7 補 0 0000111 b 負數 原碼就是原來的表示方法 反碼是除符號位 最高位 外取反 補碼 反碼 1 7 原 1 0000111 b 7 反 1 1111000 b 7 補 1 1111001 b 當...

原碼 反碼 補碼

正數 原碼 反碼 補碼一樣 7 原 0 0000111 b 7 反 0 0000111 b 7 補 0 0000111 b 負數 原碼就是原來的表示方法 反碼是除符號位 最高位 外取反 補碼 反碼 1 7 原 1 0000111 b 7 反 1 1111000 b 7 補 1 1111001 b 當...

原碼 反碼 補碼

數值在計算機中表示形式為機器數 計算機只能識別0和1,使用的是二進位制,而在日常生活中人們使用的 是十進位制,正如亞里斯多德早就指出的那樣,今天十進位制的廣泛採用,只不過我們絕大多數人生來具有10個手 指頭這個解剖學事實的結果.儘管在歷史上手指計數 5,10進製 的實踐要比二或三進製計數出現的晚.摘...