原碼:在數值前直接加一符號位的表示法
[+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進製 的實踐要比二或三進製計數出現的晚.摘...