補碼 原碼 反碼

2021-07-29 10:07:42 字數 1511 閱讀 3951

原碼:在數值前直接加一符號位的表示法

[+7]原= 0 0000111 b

[-7]原= 1 0000111 b

反碼 : 正數的反碼與原碼相同。

負數的反碼,符號位為「1」,數值部分按位取反。

[+7]反= 0 0000111 b

[-7]反= 1 1111000 b

補碼 : 正數的補碼和原碼相同

負數的補碼則是符號位為「1」。並且,這個「1」既是符號位,也是數值位。數值部分按位取反後再在末位(最低位)加1。也就是「反碼+1」。

[+7]補= 0 0000111 b

[-7]補= 1 1111001 b

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

exp:

20的二進位制補碼 = 00010100        25的二進位制補碼 = 00011001

按位取反後:     11101011           按位取反後:     11100110

末尾加 1 後:    11101100           末尾加 1 後:    11100111

-20的二進位制補碼 = 11101100       -25的二進位制補碼 = 11100111

-20                 11101100

+(-25)    =   

+ 11100111

-45                    111010011

超出的最高位去掉後 = 11010011

-45 的補碼剛好是 11010011

20                 00010100        

+(-25)    =   

+ 11100111

-5                      11111011

-5 的補碼剛好是 11111011

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

-5 的原碼 10000101

注意溢位的問題:

byte的取值範圍 八位

無符號位 0~255 (因為計算機是從0開始計算的而不是1)

有符號位 -128 ~ +127

0000 0000 = +0

沒有 1000 0000 = -0

1000 0000=-128  計算機以補碼形式儲存  這個「1」既是符號位,也是數值位。

1)(+72)+(+98)= 

0 1 0 0 1 0 0 0 b +72

01 1 0 0 0 1 0 b +98

1 0 1 0 1 0 1 0 b

11010110     -86

2)(-83)+(-80)=

1 0 1 0 1 1 0 1 b -83

1 0 1 1 0 0 0 0 b -80

0 1 0 1 1 1 0 1 b +93

原碼 反碼 補碼

正數 原碼 反碼 補碼一樣 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進製 的實踐要比二或三進製計數出現的晚.摘...