1. 程式人生 > >C語言中的int型別

C語言中的int型別

1、在計算機中,一切都是二進位制(0和1)。一個位元組等於8個位元。也就是8個0或1位。
1Byte = 8bit

2、原碼、反碼、補碼:
–正數的補碼和反碼是其本身。
–負數的補碼是在其原碼的基礎上, 符號位不變, 其餘各位取反, 最後+1. (即在反碼的基礎上+1)
–負數的反碼是在其原碼的基礎上, 符號位不變,其餘各個位取反。
也就是:
[+1] = [00000001]原 = [00000001]反 = [00000001]補
[-1] = [10000001]原 = [11111110]反 = [11111111]補

3、字長:
這裡寫圖片描述

在計算機中,cpu中暫存器與記憶體中間傳輸資料的時候每一次傳輸的資料是多少個位元就是一個字長(通常說這個cpu的暫存器是多少寬)。也就是說cpu從記憶體中每次取出一個位元組的資料(其實就是一個int),當然這個會根據cpu編譯器變化,比如64bit。
char 1個位元組
int 4個位元組(取決於cpu編譯器,通常的意義就是1個“字”)

所以會有(c語言中char和int都是整數型別):
char m = 255;
int n = 255;

printf(“%d”, m);
printf(“%d”, n);

輸出結果:
-1 //11111111
255 //00000000 00000000 00000000 11111111

4、整數越界:
這裡寫圖片描述

所以會有:
char m = 255;
int n = 255;
unsigned a = 255;
char b = 127;
b = b + 1;
char c = 255;
c = c + 1;

printf(“%d”, m);
printf(“%d”, n);
printf(“%d”, a);
printf(“%d”, b);
printf(“%d”, c);

輸出結果:
-1
255
255
-128
0