知識點:
原碼和補碼,在計算機系統中,數值一律用補碼來表示和儲存
正數的補碼:與原碼相同
負數的補碼:符號位為1,其餘位為該數絕對值的原碼按位取反,然後加1
例如,乙個char型別的 -7的補碼:因為是負數,則符號位為「1」,整個為10000111;其餘7位為-7的絕對值+7的原碼
0000111按位取反為1111000,再加1;所以-7的補碼是11111001。
若有unsigned char a = 7;
char b = -7;
char c = a + b;
a 和 b 儲存在計算機的二進位制為:
a = 00000111
b = 11111001
其實,此時的a和b相加是直接用記憶體裡面儲存的二進位制直接相加罷了。a + b = 0
因此,得出以下結論:
當表示式中存在有符號型別和無符號型別時,所有的運算元都自動轉換成無符號型別
#include char getchar(int x, int y)
int main(void)
上面輸出結果是: 有符號變數與無符號變數的值的轉換
include char getchar int x,int y int main void 這段程式的輸出結果為 c1 1 c2 2 c3 1 c4 2 首先說明getchar 函式的作用 將引數x的值轉換為無符號整形後再與y相加。其結果與101進行比較,如果大於10則函式返回1,否則返回2。注意...
有符號變數與無符號變數的值的轉換
最近了解了一下有符號變數與無符號變數的區別和聯絡,看下面 include char getchar intx,inty intmain void 程式輸出結果為 c1 1 c2 2 c3 1 c4 2 首先說明getchar 函式的作用 將引數x的值轉換為無符號整形後再與y相加。其結果與101進行比...
有符號與無符號
最高位為1,表示這個數為負數 最高位為0,表示這個數為正數 include int main 執行結果 正數的補碼為正數本身 負數的補碼為負數的絕對值各位取反後加1 8位整數5的補碼為 0000 0101 8位整數 7的補碼為 1111 1001 16位整數20的補碼為 0000 0000 0001...