了解float数据类型,我们有必要了解一下double数据类型。double数据类型又称双精度数,占64位。存储结构如下:
符号位 指数 尾数
double 1 11 52 他的存储方式与float数据类型非常接近,不过double有11位指数,52位尾数,所以可以表示的数字更大。+/- 1.79769e+308。 为了了解double类型数据存储形式,我们运行以下代码:
#include
int main( )
{
unsigned char *pchar;;
double x=120.5;
pchar=&x;
printf("*(pchar+0)=0x%x\n",*pchar);
printf("*(pchar+1)=0x%x\n",*(pchar+1));
printf("*(pchar+2)=0x%x\n",*(pchar+2));
printf("*(pchar+3)=0x%x\n",*(pchar+3));
printf("*(pchar+4)=0x%x\n",*(pchar+4));
printf("*(pchar+5)=0x%x\n",*(pchar+5));
printf("*(pchar+6)=0x%x\n",*(pchar+6));
printf("*(pchar+7)=0x%x\n",*(pchar+7));
return 0;
} 在VC中输出结果如下:
0x40,0x5e,0x20,0x00,0x00,0x00,0x00,0x00写为二进制形式如下: 0100,0000,0101,1110,0010,0000,000,000,000,000,000,000,000,000,000,000. 按照IEEE规范我们划分一下。
0,100,0000,0101, 1110,0010,0000,000,000,000,000,000,000,000,000,000,000.
0,符号位,正数。 100,0000,0101指数1029-1023=6,
1110,0010,0000,000,000,000,000,000,000,000,000,000,000.尾数。最高位补1 1.1110,0010,0000,000,000,000,000,000,000,000,000,000,0000. 1.1110001 即1.1110001*2^6。 了解double类型数据,自己动手写出double类型数据最大值和最小值,以及精度!
用户1842699 2015-12-18 16:05