Java 原碼、反碼、補碼 詳解

1. 機器數

一個數在計算機中的二進制表現形式,叫做這個數的機器數。一個數的最高位表示符號,0是正數,1是負數。

2. 真值

因為機器數是帶符號的,所以機器數不能表示一個數的真正的值。比如-1的機器數是:1000 0001,但是1000 0001轉成10進制是81。-1的真值是:-0000 0001,機器數是把符號用0和1來表示。

3. 原碼

原碼就是符號位加上真值的絕對值。比如:8 原碼是 0000 1000。-8 原碼是 1000 1000。

4. 反碼

正數的反碼,就是其本身。而負數的反碼,保持最高的符號位不變,其余位置取反。比如 8 反碼和原碼相同都是:0000 1000。而-8的反碼則是:1111 0111。由此可以看出,一個負數的反碼,是看不出它的數值的,只能轉回原碼才能計算出。

5. 補碼

正數的補碼,依舊是其本身。而負數的補碼,是在原碼基礎上,符號位不變,其余位置取反再+1。比如:-8 原碼:1000 1000,取反:1111 0111。再加1得到補碼:1111 1000。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容