C語言int的取值範圍在32/64位系統中都是32位,範圍為-2147483648~+2147483647,無符號情況下表示為0~4294967295。
C/C++程式語言中,int表示整型變數,是一種資料型別,用於定義一個整型變數,在不同編譯環境有不同的大小,不同編譯執行環境大小不同。
C的資料型別包括:整型、字元型、實型或浮點型(單精度和雙精度)、列舉型別、陣列型別、結構體型別、共用體型別、指標型別和空型別。
基本資料型別:
void:宣告函式無返回值或無引數,宣告無型別指標,顯示丟棄運算結果。(C89標準新增)
char:字元型型別資料,屬於整型資料的一種。(K&R時期引入)
int:整型資料,表示範圍通常為編譯器指定的記憶體位元組長。(K&R時期引入)
float:單精度浮點型資料,屬於浮點資料的一種。(K&R時期引入)
double:雙精度浮點型資料,屬於浮點資料的一種。(K&R時期引入)
_Bool:布林型(C99標準新增)
_Complex:複數的基本型別(C99標準新增)
_Imaginary:虛數,與複數基本型別相似,沒有實部的純虛數(C99標準新增)
_Generic:提供過載的介面入口(C11標準新增)
擴充套件資料:
1989年,ANSI釋出了第一個完整的C語言標準——ANSI X3。159—1989,簡稱“C89”,不過人們也習慣稱其為“ANSI C”。
C89在1990年被國際標準組織ISO(International Standard Organization)一字不改地採納,ISO官方給予的名稱為:ISO/IEC 9899,所以ISO/IEC9899: 1990也通常被簡稱為“C90”。
1999年,在做了一些必要的修正和完善後,ISO釋出了新的C語言標準,命名為ISO/IEC 9899:1999,簡稱“C99”。
在2011年12月8日,ISO又正式釋出了新的標準,稱為ISO/IEC9899: 2011,簡稱為“C11”。
參考資料:
百度百科-C語言
百度百科-int函式
16位的int取值範圍分為無符號整型(unsigned int)和有符號整型(signed int)。
無符號整型是0000 0000 0000 0000 ~ 1111 1111 1111 1111,對應的十進位制數為0到65535(即2^16-1)。
要理解有符號整型首先要了解兩個規定:
符號位
:對於有符號整型,儲存單元中最高位代表符號位:0為正,1為負。
有符號整型的負數表示方法
:補碼(原碼先取反再加1得到補碼)。
————————————————————————————————————————-
舉例:表示16位的-1。
1的原碼:0000 0000 0000 0001;
取反(01互換):1111 1111 1111 1110;
加1:1111 1111 1111 1111。
得到-1的補碼為1111 1111 1111 1111。
所以16位二進位制有符號整型的-1就表示為1111 1111 1111 1111。
————————————————————————————————————————-
所以16位二進位制數有符號整型的表示範圍為:
正數
,最高位為0,取值範圍如下:
0000 0000 0000 0001 到 0111 1111 1111 1111
對應的十進位制數為1到32767(2^15-1)。
0
,全部位為0:
0000 0000 0000 0000。
負數
,最高位為1,取值範圍如下(以補碼形式表示):
1111 1111 1111 1111 到 1000 0000 0000 0000
對應的十進位制數為-32768到-1,即-2^15到-1。
綜上
,16位二進位制數有符號整型的取值範圍是-32768到32767。
加深理解
:題主問題中問-32768(-2^15)怎麼來的,1000 0000 0000 0000在無符號整型中表示2^15怎麼在有符號整型中就表示-2^15了呢?這裡可以透過補碼減1取反倒推出原碼。
補碼:1000 0000 0000 0000
減1:0111 1111 1111 1111
取反得到原碼:1000 0000 0000 0000(2^15)
原碼補碼相同,只是個巧合。
C語言中int的取值範圍為:-2147483648 ~ 2147483647
解釋如下:
int型別在C語言中佔4個位元組,即32個二進位制位。
當表示正數時,最高位為符號位(符號位為0),最大的正數是 0111 1111 1111 1111 1111 1111 1111 1111 即2^31 -1 = 2147483647
當表示負數時,最高位為符號位(符號位為1),最小的負數是 1000 0000 0000 0000 0000 0000 0000 0000 而在計算機中是以補碼的形式儲存的,C語言規定 1000 0000 0000 0000 0000 0000 0000 0000 的補碼為-2147483648
所以C語言中int的取值範圍為:-2147483648 ~ 2147483647
負數是用補碼儲存的,所以1111 1111 1111 1111 按十六位有符號整數轉換為十進位制數字就是-1,是最大的負整數。
-32768的轉換過程是:
先將32768(-32768的絕對值)按位取反,結果就是0111 1111 1111 1111
之後再將取反後的結果加1,就得了-32768的二進位制儲存:1000 0000 0000 0000
請自行查詢 補碼 的相關知識仔細研讀吧!
c語言int的取值範圍在32/64位系統中都是32位,範圍為-2147483648,+2147483647,無符號情況下表示為0,4294967295。c/c++程式語言中,int表示整型變數,是一種資料型別,用於定義一個整型變數,在不同編譯環境有不同的大小,不同編譯執行環境大小不同。c的資料型別包括:整型、字元型、實型或浮點型(單精度和雙精度)、列舉型別、陣列型別、結構體型別、共用體型別、指標型別和空型別。基本資料型別:void:宣告函式無返回值或無引數,宣告無型別指標,顯示丟棄運算結果。(c89標準新增)。char:字元型型別資料,屬於整型資料的一種。(k&r時期引入)。int:整型資料,表示範圍通常為編譯器指定的記憶體位元組長。(k&r時期引入)。float:單精度浮點型資料,屬於浮點資料的一種。(k&r時期引入)。double:雙精度浮點型資料,屬於浮點資料的一種。(k&r時期引入)。_bool:布林型(c99標準新增)。_complex:複數的基本型別(c99標準新增)。_imaginary:虛數,與複數基本型別相似,沒有實部的純虛數(c99標準新增)。_generic:提供過載的介面入口(c11標準新增)。