1. 程式人生 > >c++ 關於如何獲取int型的最大值

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

  之前有一個題,因為求最小值時minn初始賦值不夠大,導致一直沒過,卡了很久。

之後我就發憤圖強學了這方面的內容:

  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都被包含在一個叫的標頭檔案中,
這個標頭檔案用法如下:
標頭檔案定義的符號常量
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