有時候我們在coding的過程中經常需要知道某個變量所能表示的最大或者最小值,在程序設計的基礎課上老師肯定也都講過,只是那么多的數值沒辦法都記住,下面是我的一些經驗,這些也是一個程序員應該掌握的基本知識。
下面只以int類型舉例,默認 int 32位。
首先要明白的是,整數采用的是補碼表示方法,忘了補碼概念的可以參考http://baike.baidu.com/view/377340.htm 。對於有符號整數,最高位是符號位,1表示負數,0表示正數。+0和-0的補碼均為:所有位全部置0。
int 的最大值二進制表示為:01111111 11111111 11111111 11111111 即2^31-1
int的最小值二進制表示為:10000000 00000000 00000000 00000000 即-2^31 (補碼表示的負數的絕對值求法:將包括符號位在內的所有位取反,然后加1,得到的結果視作一個無符號整數即為該負數的絕對值)
c++中std命名空間中定義了每個類型的最大、最小值等;對於浮點型數據還定義了對應的無限大的數
cout<<std::numeric_limits<int>::max()<<endl; int最大值
cout<<std::numeric_limits<int>::min()<<endl; int最小值
cout<<std::numeric_limits<double>::infinity()<<endl; double 的無限大
c語言中的頭文件limits.h(c++對應頭文件為climits)定義了整形數據類型的表達值范圍(宏定義),該頭文件定義的宏可以參考http://www.cplusplus.com/reference/climits/。
包含了該頭文件后可以輸出如下:
cout<<INT_MAX<<endl; int最大值
cout<<INT_MIN<<endl; int最小值
float.h 定義了double float的最大最小值,具體參考http://www.cplusplus.com/reference/cfloat/
---------------------------------------------------------
如果想要查看某個整形數據的各個二進制位的值,可以用如下函數
void fun( Type n) //type是某個整形類型如int long char short等,使用時要具體定義
{
bitset<8*sizeof(n)>b(n);
cout<<b<<endl;
}
【版權聲明】轉載請注明出處 http://www.cnblogs.com/TenosDoIt/archive/2013/04/17/3026232.html