关于int存放最大值
一个32比特位的整型变量可以存放的最大值为32个1?不知理解对不对。正常是-1*2^31+1*2^30+1*2^29......+1*2^0-1?理解为(1*2^30+1*2^29......+1*2^0)-1*2^31-1
为什么程序写出来等于 -2147483648 而不是2147483647?或者开始就理解错了?
#include <stdio.h>
#include <math.h>
#define N pow(2, 31)
int main()
{
int i, j;
int m = j - N;
int l = m - 1;
j = pow(2, i);
for(i = 0; i < 30; i++)
{
j += pow(2, i);
}
printf("%d\n", l);
return 0;
} 32 位全一的表达是 2 ^ 0 + 2 ^ 1 + 2 ^ 2 + 2 ^ 3 + ... + 2 ^ 31
#include <stdio.h>
int main(void)
{
unsigned int k , d , e ;
for(d = 0 , e = 1 , k = 0 ; k < 32 ; e <<= 1 , k ++) d += e ;
printf("0x%08x\n" , d) ;
printf("%u\n" , d) ;
printf("%d\n" , d) ;
}
编译、运行实况:
D:\00.Excise\C>g++ -o x x.c
D:\00.Excise\C>x
0xffffffff
4294967295
-1
D:\00.Excise\C>
页:
[1]