①計算機中實際上並沒有減法,而只有加法,減法用增加乙個數的相反數實現。
即1 - 1在計算機中的實際預算中為 1 + (-1)
而此時如果使用原碼進行運算:0 0000001(1) + 1 0000001(-1) = 1 0000010(-2),會出現運算錯誤的情況。
為了解決原碼做減法出錯的問題,出現了反碼
0 0000001【1反】 + 1 1111110【-1反】 = 1 1111111【0反】 ==> 1 0000000【0原】
但是使用反碼時,0既可以用0表示,也可以用-0表示。然而這是沒有意義的,所以出現了補碼
0 0000001【1補】 + 1 1111111【-1補】 = 0 0000000【0補】 ==> 0 0000000【0原】
並且在使用補碼時,原來-0所佔位置可以用來表示該長度所能表示的最小的數,若為8位則能夠表示-128。
(-1)+(-127)= -128
1 1111111【-1補】 + 1 0000001【-127補】 = 1 0000000【-128補】 ==> 1 0000000【-128原】
①取相反數
5取相反數 0 0000101【5原5反5補】 1 0000101【-5原】 1 1111010【-5反】 1 1111011【-5補】
由上可看出常規情況下乙個數取相反數為所有數字取反加一
但是對於1 0000000【-128補】所有數字取反加一後仍然是它本身
如有錯漏,歡迎指出。
原碼,反碼,補碼,個人理解
原碼 二進位制定點表示法,即最高位為符號位,0 表示正數,1 表示負數,其餘的位表示數值的大小 正數的最高位為0 負數的最高位為1 例子 符號位 數值位 7 0 0000111 7 1 0000111 反碼 正數的反碼與原碼相同,沒有任何改變 負數的反碼 與原碼的符號位不變,其他值取反,也就是0變1...
原碼 反碼 補碼
正數 原碼 反碼 補碼一樣 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 當...