一.整數的表示
由於計算機只能識別二進制的0和1,在存儲數據時就涉及到了對數據的編碼問題,計算機中對整數的編碼有兩種不同的方式,分別為:
1. 只能表示非負數,此種類型數據稱為無符號類型 即 unsigned
2. 能表示負數0和正數,此種類型數據稱為有符號類型 signed
二.整型數據類型的表示范圍
C數據類型 |
字節數 |
編碼方式 |
能表示的最小值 |
能表示的最大值 |
unsigned char |
1 |
原碼 |
0 (0x00) |
128 (0xFF) |
char |
1 |
補碼 |
-128 (0x80 ) |
127 (0x7F) |
unsigned short |
2 |
原碼 |
0 (0x00 00) |
65535(0xFFFF) |
short |
2 |
補碼 |
-32768(0x8000) |
32767(0x7FFF) |
unsigned int |
4 |
原碼 |
(0x0000 0000) |
(0xFFFF FFFF) |
int |
4 |
補碼 |
(0x8000 0000) |
(0x7FFF FFFF) |
unsigned long |
4 |
原碼 |
(0x0000 0000) |
(0xFFFF FFFF) |
long |
4 |
補碼 |
(0x8000 0000) |
(0x7FFF FFFF) |
unsigned long long |
8 |
原碼 |
(0x0000 0000 0000 0000) |
(0xFFFF FFFF FFFF ) |
long long |
8 |
補碼 |
(0x8000 0000 0000 0000 ) |
(0x7FFF FFFF FFFF FFFF) |
32位環境的驗證:
sizeof(char) = 1byte
sizeof(unsigned char) = 1byte
sizeof(short int) = 2byte
sizeof(unsigned short int) = 2byte
sizeof(int) = 4byte
sizeof(unsigned int) = 4byte
sizeof(long) = 4byte
sizeof(unsigned long) = 4byte
sizeof(long long) = 8byte
sizeof(unsigned long long) = 8byte
64位環境整型數據的取值范圍:
C數據類型 |
字節數 |
編碼方式 |
能表示的最小值 |
能表示的最大值 |
unsigned char |
1 |
原碼 |
0 (0x00) |
128 (0xFF) |
char |
1 |
補碼 |
-128 (0x80 ) |
127 (0x7F) |
unsigned short |
2 |
原碼 |
0 (0x00 00) |
65535(0xFFFF) |
short |
2 |
補碼 |
-32768(0x8000) |
32767(0x7FFF) |
unsigned int |
4 |
原碼 |
(0x0000 0000) |
(0xFFFF FFFF) |
int |
4 |
補碼 |
(0x8000 0000) |
(0x7FFF FFFF) |
unsigned long |
8 |
原碼 |
(0x0000 0000 0000 0000) |
(0xFFFF FFFF FFFF ) |
long |
8 |
補碼 |
(0x8000 0000 0000 0000 ) |
(0x7FFF FFFF FFFF FFFF) |
unsigned long long |
8 |
原碼 |
(0x0000 0000 0000 0000) |
(0xFFFF FFFF FFFF ) |
long long |
8 |
補碼 |
(0x8000 0000 0000 0000 ) |
(0x7FFF FFFF FFFF FFFF) |
64位環境的驗證;
sizeof(char) = 1
sizeof(unsigned char) = 1
sizeof(short int) = 2
sizeof(unsigned short int) = 2
sizeof(int) = 4
sizeof(unsigned int) = 4
sizeof(long) = 8
sizeof(unsigned long) = 8
sizeof(long long) = 8
sizeof(unsigned long long) = 8
三.無符號數的編碼



