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 最大值 float縮寫FLT 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
原文在https://www.cnblogs.com/JRicardo/p/6900501.html