c++ 關於如何獲取int型的最大值


 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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM