关于数据类型的取值范围的理解

以int类型为例

int类型一般为四个字节,共32位。

int 用补码表示,补码表示中负数比正数多一个,最大值为2147483647 最小的数为 -2147483648,那么为什么为多一个数呢,就是0的表示,只有+0才是正常的,-0被移做最小的那个int了。

符号为0为正,1为负,所以正数的最大值为01111111111,那么当这个最大的数加一有神马情况呢?就是变成了100000000000,这个数,其实按照取反加一来表示时,这个数应该是标准的-0,但是由于补码把这个改成了最小的负数,所以INT_MAX+1就是INT_MIN,记住正数最大加一后变最小的;

上面说的这个climits这个头文件中,有INT_MAX和INT_MIN

正数的范围是0~2147483647,二进制就是0000000000~01111111111111111;

负数的范围是-2147483648~-1,二进制就是1000000000~ 11111111111111111;

如图所示:

原文地址:https://www.cnblogs.com/feng--fan/p/8023792.html