float、double类型的数据在计算机内部的表示法

因为float和double类型的数据在内存中的保存形式是同样的,只是double表示的范围更大而已。所以,这里只介绍float的表示方法。double同理。
假设,我如今有一个数据-12.25。那么这个数据在计算机内部是如何存储的呢?
首先,将这个浮点数转换成二进制数。通过转换,获得的二进制数为:1100.01。
接着,将这个二进制数用科学计数法来表示,1.10001 * 2 ^ 3。
因为这个数是负数。因此,符号位为1;指数位为127 + 3 = 130;尾数(小数)为10001。
而后,将指数130转换为二进制数10000010。
最后,因为float占4个字节,也就是32位,因此,-12.25在内存中表示为:
11000001010001000000000000000000,将这个数用十六进制表示为0xC1440000。
那么,咱们的计算结果对不对呢?咱们能够用程序来验证一下。ide

float a = -12.25;
    unsigned int* p = ( unsigned int* )&a;

    printf ( "0x%08X\n", *p );

    system ( "pause" );
    return 0;

运行结果为:
float、double类型的数据在计算机内部的表示法
运行结果和咱们计算的彻底同样。code

相关文章
相关标签/搜索