C語言學習筆記1 有符號數和無符號數

2021-08-15 07:37:32 字數 1099 閱讀 3947

c語言中:

·signed關鍵字宣告變數為有符號型別

·unsigned關鍵字宣告變數為無符號型別

注意:c語言中只有整數型別能夠宣告unsigne變數

有符號數(signed):

· 在計算機內部用補碼表示有符號數

—最高位為 0, 表示這個數為正數

—最高位為 1, 表示這個數為負數

正數的補碼為正數本身

負數的補碼為負數的絕對值取反加 1

例: 8位整數 6 的補碼為: 0000 0110

8位整數 -6 的補碼為 : 1111 1010

16位整數 16 的補碼為: 0000 0000 0001 0000

16位整數 -16 的補碼為: 1111 1111 1111 0000

無符號數(unsigned):

· 在計算機內部用原碼表示無符號數

-無符號數沒有符號位, 只用於表示正數
有符號數(signed):

· 因最高位為符號位

8位有符號數取值範圍:-2^7————2^7 - 1

16位有符號數取值範圍:-2^15————2^15 - 1

32位有符號數取值範圍:-2^31————2^31 - 1

無符號數(unsigned):

· 無符號數隻表示正數

8位無符號數取值範圍:0————2^8 - 1

16位無符號數取值範圍:0————2^16 - 1

32位無符號數取值範圍:0————2^32 - 1

· 先上**

#include 

int main()

else

return

0;}

執行結果為

i + j > 0

結論:無符號數與有符號數混合運算時,編譯器會將有符號數轉化為無符號數後再進行運算,結果為無符號數因此需小心使用unsigned關鍵字

C 有符號數和無符號數

1.有符號數和無符號數 c支援所有整形資料型別的有符號數和無符號數運算。儘管c標準並沒有指定某種有符號數的表示,但是幾乎所有的機器都使用二進位制補碼。通常,大多數數字預設都使有符號的,c也允許無符號數和有符號數之間的轉換,轉換原則是基本的位表示保持不變。因此在一台二進位制補碼機器上,當從無符號數轉換...

C 有符號數和無符號數擴充套件

c語言標準要求先進行資料大小的轉換,之後再進行無符號和有符號之間的轉換.c語言中的強制型別轉換保持二進位制位值不變,只是改變解釋位的方式。將無符號數轉換為更大的資料型別時,只需簡單地在開頭新增0,這種運算稱為0擴充套件。將有符號數轉換為更大的資料型別需要執行符號擴充套件,規則是將符號位擴充套件至所需...

C語言中無符號數和有符號數相加問題

32位的int的最大值與最小值,最大值2的31次方 1 pow 2,31 1,最小值為負的2的31次方 pow 2,31 c語言中沒有次冪的運算子,是異或的運算子。看個題 include int main 結果是 14 6 意想不到吧?為什麼結果這樣呢?原來有符號數和無符號數進行比較運算時 有符號數...