int型的最大值是0x7fffffff,
可以算一下 0x7FFFFFFF 是多少
每個十六進制數4bit,因此8位16進制是4個字節,剛好是一個int整型(好像一個字節是8 bit)
F的二進制碼為 1111
7的二進制碼為 0111
這樣一來,整個整數 0x7FFFFFFF 的二進制表示就是除了首位是 0,其余都是1
就是說,這是最大的整型數 int(因為第一位是符號位,0 表示他是正數)
用 INT_MAX 常量可以替代這個值。
所以目測0x好像是表示這是一個十六進制數。
相應的最小值可以表示成0x80000000或INT_MIN,這里注意一個問題就是INT_MAX和INT_MIN都被包含在一個叫<climits>的頭文件中,
這個頭文件用法如下:
<climits>頭文件定義的符號常量
CHAR_MIN char的最小值
SCHAR_MAX signed char 最大值
SCHAR_MIN signed char 最小值
UCHAR_MAX unsigned char 最大值
SHRT_MAX short 最大值
SHRT_MIN short 最小值
USHRT_MAX unsigned short 最大值
INT_MAX int 最大值
INT_MIN int 最小值
UINT_MAX unsigned int 最大值
UINT_MIN unsigned int 最小值
LONG_MAX long最大值
LONG_MIN long最小值
ULONG_MAX unsigned long 最大值
FLT_MANT_DIG float 類型的尾數
FLT_DIG float 類型的最少有效數字位數
FLT_MIN_10_EXP 帶有全部有效數的float類型的負指數的最小值(以10為底)
FLT_MAX_10_EXP float類型的正指數的最大值(以10為底)
FLT_MIN 保留全部精度的float類型正數最小值
FLT_MAX float類型正數最大值
好吧,這里不得不感慨自己知識的匱乏orz,,,關於0x80000000,其實是負數的存儲方式也就是補碼,查了有關介紹記在下面:
計算機中的負數是以其補碼形式存在的 補碼=原碼取反+1
一個字節有8位 可以表示的數值范圍在 -128到+127
用二進制表示也就是 10000000 - 01111111(注意:最高位表示符號)
最高位是1的都是負數 最高位是0的都是正數
如-7 原碼是 10000111 然后取反(最高位是符合不用取反)得11111000
加一 得11111001 那么-7的二進制數就是 11111001
再如 -10 原碼是 10001010 取反得 11110101 加一得 11110110
那么-10的二進制數就是 11110110
二進制數是逢二進一 只有0和1兩個數字 沒有2