当无符号0以二进制储存在内存中的时候,每一位都为0,以32位int为例,(unsigned int)0的二进制为:
00000000000000000000000000000000
按位取反(~)后,变成:
11111111111111111111111111111111
此时的十进制为:
4294967295
除以2(因为int类型中有一半表示负数且比正数多一个)之后为:
2147483647
即为32位int类型最大值。
C中短整型和整型均占2个字节,取值范围是 -32768 ~~~ 32767
长整型占4个字节,取值范围是 -2147483648 ~~~~ 2147483647
如果是无符号数的话,可以表示的数据就是
短整型和 整型: 0--- 65535
长整型: 0---4294967295
在C语言中如果一个数很大的话,超过最大的长整型,可以使用double来存储,这样不会影响运算精度。
这样算:一般来说int型 占4字节,1字节=8bit4字节就是4*8bit=32bit那么int型最大能表示的数为2^32(2的32次方)=也就是:4294967296(这是无符号的int型能表示的最大数,而有符号的int型中还包含负数,所以表示最大值要砍掉一半,如下)
有符号int型:
有符号int型能表示最大数为:4294967296÷2-1=2147483647
如果要在程序中自动算出,可以这么写:pow(2,ziseof(int)*8)/2-1
记得加上头文件:#include <math.h>
望采纳!
0x00CBF95C是int变量a的地址,从内存查看器可以看出,十进制数16被存储为00 00 00 10
说明单个'0'存储范围为0-15,表示成二进制的话,一个'0'存储范围相当于0000~1111,4个二进制位;
这里有8个'0',相当于一个int型是由4*8=32个二进制位来表示。