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。
那么,我们的计算结果对不对呢?我们可以用程序来验证一下。
10年的宣城网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。成都营销网站建设的优势是能够根据用户设备显示端的尺寸不同,自动调整宣城建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。成都创新互联公司从事“宣城网站设计”,“宣城网站推广”以来,每个客户项目都认真落实执行。
float a = -12.25;
unsigned int* p = ( unsigned int* )&a;
printf ( "0x%08X\n", *p );
system ( "pause" );
return 0;
运行结果为:
运行结果和我们计算的完全一样。
文章名称:float、double类型的数据在计算机内部的表示法
本文地址:http://myzitong.com/article/pedgpp.html