|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
一个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>
复制代码
|
|