計算機中的符號數有三種表示方法,即原碼、反碼和補碼。
三種表示方法均有符號位和數值位兩部分,符號位都是用0表示「正」,用1表示「負」,而數值位,三種表示方法各不相同。
在計算機系統中,數值一律用補碼來表示和儲存。
原因在於,使用補碼,可以將符號位和數值域統一處理;同時,加法和減法也可以統一處理。
此外,補碼與原碼相互轉換,其運算過程是相同的,不需要額外的硬體電路。
正數的原碼、反碼、補碼都相同。
原碼:就是二進位制表示,最高位為符號位,0表示正,1表示負
反碼:負數的反碼,就是逐位取反(符號位除外)
補碼:負數的補碼,反碼末位加1.
正數5:
二進位制:00000101
原碼:00000101
反碼:00000101
補碼:00000101
負數5:
二進位制:10000101
原碼:10000101
反碼:11111010
補碼:11111011
計算: 2-1
2-1 = 2 + (-1)
2 000000100000001000000010
-1 100000011111111011111111
負數的補碼求原始資料步驟:1. -12. 取反3. 符號位改為1
1111111111111110
2
00000010
-1 11111111
00000001
計算:2-3 = 2 + (-3) = -1
2 000000100000001000000010
-3100000111111110011111101
2 00000010-3 11111101 11111111
-128是人為規定的。
因為8位2進製中,存在 「-0」(1000 0000)和"0"(0000 0000),雖然「-0」也是「0」,但根據正、反、補碼體系,「-0」的補碼和「+0」是不同的,這樣就出現兩個補碼代表乙個數值的情況。為了將補碼與數字一一對應,所以人為規定「0」一律用「+0」代表。同時為了充分利用資源,就將原來本應該表示「-0」的補碼規定為代表-128。
驗證 1000 0000 到底是0還是-128,先假設為x
則 2+x=?
0000 0010
1000 0000
1000 0010 --> 1000 0001 --> 0111 1110
即為正負126
所以x=-128或x=124,顯然應該取負數解!
原碼 反碼 補碼
正數 原碼 反碼 補碼一樣 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進製 的實踐要比二或三進製計數出現的晚.摘...