java-原碼、反碼、補碼

好好學習,天天向下!

一、原碼

解釋: 數據採用二進制來表示,最高位爲符號位,‘0’代表正,‘1’代表負,其餘爲數字轉換爲二進制的正常值
數值 符號位 原碼值
+4 0 0000100
-4 1 0000100

二、反碼

解釋: 正數的反碼與其原碼相同,負數的反碼則是對其二進制結果的每一位進行取反(即0變1;1變0);符號位不可改變
數值 符號位 反碼值
+4 0 0000100
-4 1 1111011

三、補碼

解釋: 正數的補碼與其原碼相同;負數的補碼是其反碼加1
數值 符號位 補碼值
+4 0 0000100
-4 1 1111100

注:

  • 在二進制結果前加上符號位,0或1進行區分數值的正負
  • 不管是原碼、反碼、補碼,符號位都是不會改變的
  • 在計算機中的數值是以該數的補碼形式來表示
  • 使用補碼不僅僅修復了0的符號以及存在兩個編碼的問題,而且還能夠多表示一個最低數,這就是爲什麼8位二進制使用原碼或反碼錶示的範圍爲 [-127, +127],而使用補碼錶示的範圍爲 [-128, 127] 的原因
  • 因爲機器使用補碼,所以對於編程中常用到的32位int類型可以表示範圍是 [-2^31, 2^31-1] ,因爲第一位表示的是符號位,而使用補碼錶示時又可以多保存一個最小值
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章