什麼是原碼、反碼、補碼?
計算機中的符號數有三種表示方法,即原碼、反碼和補碼。三種表示方法均有符號位和數值位兩部分,符號位都是用0表示「正」,用1表示「負」,而數值位,三種表示方法各不相同。
在數值前直接加一符號位的表示法。
例如-7的原碼是1
0000111
正數的反碼與其原碼相同;
負數的反碼是對其原碼逐位取反,但符號位除外。
例如-7的反碼是1
1111000
正數和+0的補碼是其原碼,負數則先計算其反碼,然後反碼加上1,得到補碼
##########################分界線##################################
我查閱了一些材料,得到如下總結:
最原先最簡單的是原碼,但是因為原碼存在乙個運算的問題:
十進位制原 碼
10000 0001
-11000 0001
加法結果
1000 0001
十進位制結果
-2這樣最基礎的運算如果按照計算機邏輯則會出錯,即
原碼是有符號數的最簡單的編碼方式,便於輸入輸出,但作為**加減運算時較為複雜,故計算機一般不採用這種編碼方式儲存符號數。於是提出了反碼,但是反碼出現了另乙個問題:
計算結果會出現1000 0000(-0)
這樣的存在,於是會出現二進位制與十進位制的互換不再是一一對應的關係這樣的問題,增加計算難度,故也被拋棄。
隨後提出了基於反碼的-0
問題而誕生的補碼,專門用來解決-0
的問題。
補碼換算為原碼
的過程中,如果補碼是正數或者+0的補碼,則其原碼就是補碼本身;如果補碼是負數或者-0的補碼,則其原碼的計算方法是,先將補碼減掉1,得到反碼,再將反碼取反,得到原碼。
什麼是原碼 反碼和補碼及由來
1.原碼 在計算機裡是以二進位制表示的,只有0和1,數字的正負沒有多餘符號表示的。那為了分出正負就發明了原碼 如果是8位的計算機,取出8位中的第一位不參與數字值的表示,用來表示正負。如果第一位是0,那就規定這個數為正數,如果第一位是1,那就規定這個數為負數。這種表示法稱為原碼。比如10進製的6的二進...
原碼 反碼 補碼以及為什麼要用反碼和補碼
原文遷移到 機器數乙個數在計算機中的二進位制表示形式,叫做這個數的機器數,機器數是帶符號的,在計算機中用乙個數的最高位存放符號,正數為0,負數為1,比如,十進位制中的 3,假設計算機字長為8位,轉換成二進位制就是0000 0011,如果是 3,就是1000 0011.那麼,這裡0000 0011和1...
原碼 反碼和補碼
數值有正負之分 計算機就用乙個數的最高位存放符號 0為正 1為負 這就是機器數的原碼了 假設機器能處理的位數為 8.即字長為 1byte,原碼能表示數值的範圍為 127 0 0 127 共256個.有了數值的表示方法就可以對數進行算術運算 但是很快就發現用帶符號位的原碼進行乘除運算時結果正確 而在加...