C语言浮点数和存储

浮点数内存存储结构:科学计数法

科学计数法表示实数:

    十进制12345 = 1.2345*10^4

    二进制

       1011.01 = 1.01101*2^3 1.01101为尾数 3为指数 0为符号位

       -0.010101 = -1.0101*2^-2 1.0101为尾数 -2为指数 1为符号位

在IEEE标准中,浮点数是将特定长度的连续字节(4个字节或者8个字节)的所有二进制位(32位和64位)分割为特定宽度的三个域。

符号数S 占1位 正数位0 负数为1

阶码域E 占8位或者11位E=e+127(float)或者E+1023(double) 指数e有正负既有符号数,但阶码为正既无符号数,所以将e加个127或者1023作为偏移,方便指数的比较。

尾数域M 占23位或者52位,1.01101但整数部分的1是默认的,可以不用存储,计算浮点数的存储方式,只需要依次求出1位的符号位,8位或11位的阶码,以及23位或者52位的尾数即可。


存储结构


给出一个浮点数 计算对应的二进制

比如给定一个浮点数7.25如何计算它对应的单精度和双精度的二进制呢?

1、 十进制浮点数7.25对应的二进制:111.01

2、 用二进制的科学计数法1.1101*2^2

3、 按照浮点数的存储结构,得出符号位为0 表示正数

4 、阶码(指数+127/1023)E单精度为 2+127 双精度2+1023

5 、小数部分M为1001(单精度23位 双精度52位余下的0补0 即单精度补19个0 双精度补48个0)

6 、7.25的单精度和双精度表示为

单精度0 10000001 1101 0000000000000000000

双精度0 10000001 1101 000000000000000000000000000000000000000000000000

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容