#include <iostream>
#include <stdio.h>
#include <string.h>
//#include <conio.h>
using namespace std;
int main(void)
{
float a = 1.0f;
cout << (int)a << endl;
cout << &a << endl;
cout << (int&)a << endl;
printf("&a = %08x,(int)a = %d\n",&a,(int)a);
unsigned char *ptr = (unsigned char*)&a;
for(int i = 0; i < sizeof(a); i++)
{
printf("ptr+i = %08x,*(ptr+i) = %08x\n",ptr+i,*(ptr+i));
}
cout << endl;
long b = 1065353216;
printf("b = %08x\n",b);
float c = 0.0f;
cout << (int)c << endl;
cout << &c << endl;
printf("&c = %08x,(int)c = %d\n",&c,(int)c);
return 0;
}
1bit | 8bit | 23bit |
0 | 01111111 | 0(23个) |
0 | 0+127 | |
0 | 0 | 0(23个) |
1.0 = 1.0*2^0,所以指数部分为0,最终的十六进制为:3F 80 00 00
参考: http://blog.csdn.net/wuna66320/article/details/1691734,这里讲的很清楚
程序结果:
1
0xbfec97fc
1065353216
&a = bfec97fc,(int)a = 1
ptr+i = bfec97fc,*(ptr+i) = 00000000
ptr+i = bfec97fd,*(ptr+i) = 00000000
ptr+i = bfec97fe,*(ptr+i) = 00000080
ptr+i = bfec97ff,*(ptr+i) = 0000003f
b = 3f800000
0
0xbfec97ec
&c = bfec97ec,(int)c = 0