获取c或者c++里面的数据类型的范围
2013-04-17 14:34
218 查看
有时候我们在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;
}
【版权声明】转载请注明出处 /article/4879597.html
下面只以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;
}
【版权声明】转载请注明出处 /article/4879597.html
相关文章推荐
- 怎么计算c++中各个数据类型的取值范围
- 关于c++的数据类型范围
- C/C++中数据类型范围
- C++中基本数据类型字节数及取值范围
- C/C++ int、long、double、char等各种内置数据类型的表示范围(最大最小值)
- 备忘:C++各数据类型取值范围(备忘)--32位操作系统
- C++基础总结(1)--基本数据类型范围
- C/C++中各种数据类型 如 int ,char long,double 的范围(最大值和最小值)
- C++中得到基本数据类型的取值范围
- C++不同数据类型的取值范围(Data Type Ranges )
- C++各基础数据类型长度以及范围(总结)
- C++各数据类型取值范围(备忘)--32位操作系统
- C++基础总结(1)--基本数据类型范围
- (整理)c++中找出各种数据类型的取值范围
- (整理)c++中找出各种数据类型的取值范围
- java 获取若干小时之前的时刻 注意数据类型的范围问题
- apk 获取 framework 里面的变量或者数据
- C++基本数据类型大小及表示范围
- C++学习第5篇-变量范围及其他数据类型
- java 获取若干小时之前的时刻 注意数据类型的范围问题