1. 程式人生 > >原碼 反碼 補碼

原碼 反碼 補碼

div 就會 二進制 dash post 整數 pri printf 其余

概述:
數值的表示方法——原碼、反碼和補碼
原碼:最高位為符號位,其余各位為數值本身的絕對值

反碼
正數:反碼與原碼相同
負數:符號位為 1,其余位對原碼取反

補碼
正數:原碼、反碼、補碼相同
負數:最高位為 1,其余位為原碼取反,再對整個數加 1
計算機原碼用於表示有符號整數中的正數和無符號整數

================================================

計算機用【原碼】存儲(有符號正數)和(無符號整數)
計算機用【補碼】存儲(有符號負數),補碼減1=反碼,反碼取反=原碼

示列
int a = -1; 這裏的-1用補碼存儲
print(%d,%u,a,a);

%d按打印=-1,為什麽是-1(原碼),因為這裏打印的有符號十進制,如果這裏是-100,%u打印,就會打印-00,
%u按補碼打印=4294967295(補碼)%u按照無符號十進制打印。

原碼:1000 0000 0000 0000 0000 0000 0000 0001
反碼:1111 1111 1111 1111 1111 1111 1111 1110
補碼:1111 1111 1111 1111 1111 1111 1111 1111 補碼要從反碼哪裏加1

%d按照有符號十進制打印,%u按照無符號十進制打印。

pritf是直接抓取二進制數,無論這個數據以前是什麽類型,按照%d,%u,%....來解析

printf是根據給出的%..是多少打印對應的值

原碼 反碼 補碼