有符號變數與無符號變數的值的轉換

2021-10-04 22:24:29 字數 582 閱讀 9140

知識點:

原碼和補碼,在計算機系統中,數值一律用補碼來表示和儲存

正數的補碼:與原碼相同

負數的補碼:符號位為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...