機器數:乙個數在計算機中的二進位制表示形式。機器數是帶符號的,最高位存放符號位, 正數為0, 負數為1。
真值:機器數對應的真正數值。比如 機器數1000 0001 的真值是-1
原碼:原碼就是符號位加上(真值的絕對值)。
[+1] = 0000 0001反碼:正數的反碼是其本身,負數的反碼是在其原碼的基礎上, 符號位不變,其餘各個位取反。[-1] = 1000 0001
補碼:正數的補碼是其本身,負數的補碼是其(反碼+1)。
計算機之所有有符號位,是因為減法電路極其複雜,而給資料加上符號位,然後使用加法代替減法可以大大簡化電路。
如果計算機資料用原碼表示, 符號位會也參與計算, 對於減法來說,結果是不正確的。
1 - 1 = 1 + (-1) = [00000001]原 + [10000001]原 = [10000010]原 = -2用反碼計算減法, 結果的真值部分是正確的,但有和兩個編碼都表示0的問題。
原碼和反碼都不方便計算機進行計算,而補碼很好地解決了原碼和反碼計算的問題,所以在計算機中,資料都是補碼的形式!看到乙個資料的十六進製制是0xff的時候,應該知道這是-1!
參考文章《原碼、反碼、補碼的關係》
計算機 原碼 反碼 補碼
在計算機中,用補碼來表示數字,因為 1 這樣可以比較方便的表示0 保證0作為正數或者負數補碼都是00000000 2 計算時用補碼直接加減就是最終數值 符號位參與運算 1.原碼 原碼就是符號位加上真值的絕對值,即用第一位表示符號,其餘位表示值.比如如果是8位二進位制 1 原 0000 0001 1 ...
計算機原碼, 反碼, 補碼
乙個數在計算機中的二進位制表示形式,叫做這個數的機器數。機器數是帶符號的,在計算機用乙個數的最高位存放符號,正數為0,負數為1.因為第一位是符號位,所以機器數的形式值就不等於真正的數值。例如上面的有符號數 10000011,其最高位1代表負,其真正數值是 3 而不是形式值131 10000011轉換...
計算機原碼,反碼,補碼
最近花了點時間對計算機的原碼,反碼和補碼進行了研究,對為什麼要有反碼和補碼以及他們這麼設計的原因有了一定的理解 機器數 乙個數在計算機中的表現形式叫做機器數,這個數有正負之分,在計算機中用乙個數的最高位 符號位 用來表示它的正負,其中0表示正數,1表示負數。例如正數7,在計算機中用乙個8位的二進位制...