首頁  >  文章  >  後端開發  >  C語言中資料int的取值範圍為多少?

C語言中資料int的取值範圍為多少?

烟雨青岚
烟雨青岚原創
2020-06-30 11:17:4519542瀏覽

C 中,int佔用4字節,32比特,資料範圍為-2147483648~2147483647[-2^31~2^31-1]。 int型資料是一個有符號的整數數據,其最高位元為符號位元(0表示正,1表示負)。

C語言中資料int的取值範圍為多少?

C 中,int佔用4位元組,32位元,資料範圍為-2147483648~2147483647[-2^31~2^31- 1]。

詳細解答過程,以兩個位元組為例:

在C中,int型資料是一個有符號的整數數據,其最高位元為符號位元( 0表示正,1表示負)。

1個位元組等價於8個二進位​​位,在許多電腦系統中,通常採用補碼來表示帶符號的數(補碼系統)。

原碼:最高位元為符號位元(0表示正,1表示負),其他位元依照一般的方法來表示數的絕對值。

反碼:對於一個帶符號的書來說,正數的反碼與其原碼相同,負數的反碼為其原碼除符號位以外的各位按位取反。

補碼:正數的補碼與其原碼相同,負數的補碼為其反碼在最低位加1。

兩個字節,所以,二進位原碼最大為0111 1111 1111 1111 = 2^15 - 1 = 32767。

最小為1111 1111 1111 1111 = - (2^15 - 1) = -32767。

原碼中0的表示有正負之分[ 0]原 = 0000 0000 0000 0000;[-0]原 =1000 0000 0000 0000。

所以二進位原碼表示時,範圍是 -32767 ~ -0和0~32767,因為有兩個0,所以不同的數值個數一共有2^16 - 1個。

而電腦採用而進駐補碼儲存資料時,0的表示是唯一的:[ 0] 補= [-0] 補= 0000 0000 0000 0000

此時正數編碼不變,從0000 0000 0000 0000 ~ 0111 1111 1111 1111依然表示0 ~ 32767。

負數表示需依照補碼規則,即-32767的補碼為1000 0000 0000 0001。

所以補碼中會比原碼多一個編碼出來,這個編碼就是1000 0000 0000 0000,因為任何一個原碼都不可能在轉換成補碼時變成1000 0000 0000 0000,所以人們規定1000 0000 0000 0000這個補碼編碼為-32768。

結論:int型資料佔兩個位元組時,可表示2^16種變化,最高位元為符號位,所以正負有2^15變化,因為0也佔一種,因此正負數的最大值並不對稱,即該int型資料取值範圍為-32768 ~ 32767。

C語言中資料int的取值範圍為多少?

擴充資料:

int使用方法:

定義方法:

int i;//定義整形變數i

int i=1;//定義整形變數i並初始化為1

定義常數:

const int i ;//編譯錯誤,因為常數需要給予一個初值

const int i=1;//定義常數i,值為1   

Java定義常數:

final int i=1;//定義常數i,值為1

#建議教學:《C語言

以上是C語言中資料int的取值範圍為多少?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn