c++ 關於如何獲得char,int,float型的最大最小值

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章