千家信息网

C语言中怎么存储浮点数

发表于:2025-01-24 作者:千家信息网编辑
千家信息网最后更新 2025年01月24日,这篇文章给大家介绍C语言中怎么存储浮点数,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。C语言中,有两种类型的浮点数:32位的float和64位的double,而在计算机中存储的是
千家信息网最后更新 2025年01月24日C语言中怎么存储浮点数

这篇文章给大家介绍C语言中怎么存储浮点数,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

C语言中,有两种类型的浮点数:32位的float和64位的double,而在计算机中存储的是用二进制的科学计数法(即基数为2)表示的值

例如100=1100100B=1.1001B*26,123.456=1111011.0111010010111100011010100111111011111001110111B=1.1110110111010010111100011010100111111011111001110111B*26

既然基数固定为2,尾数的整数部分固定为1,那存储时就可以省略掉它俩了,只需要存储另外三个信息: 正负符号+指数+尾数的小数部分

float:符号占1位,指数占8位,尾数小数占23位;

double:符号占1位,指数占11位,尾数小数占52位

不过指数也有正负,因此存储时加个偏移来表示。 float用8位表示指数,偏移就是127; double用的是11位,那偏移就是1023
看看123.456用float是如何存储的: 因为是正数,符号位用0;指数是6,加上偏移127后,133=10000101B;尾数的小数部分的前23位是 1110110111010010111100 1 (第24位是1,因此需要进位),拼接成32位数就是0 10000101 11101101110100101111001 B=1123477881

再看一个纯小数的存储,例如0.00123456,这次倒着推导一下

计算机中存储的是983683318,转换为二进制就是0 01110101 01000011101000011110110 B。其中第一个0表示正值;挨着的8位01110101B=117,表示指数为(117-127)=-10;最后的23位表示尾数的小数部分,前面加上整数部分的1,再左移23位之后就是1 01000011101000011110110 B=10604790。那么原值就是10604790右移23位,再左移-10位,即10604790右移33位。而233=8589934592。所以原值就是10604790/8589934592= 0.0012345600 407571,可见前10位小数都是正确的,精度还可以

最后试个double的123.456

二进制就是:0 10000000101 11101101110100101111,00011010100111111011111001110111 B。其中第一个0表示正值;指数位是10000000101B=1029,表示指数为(1029-1023)=6;最后是52位尾数,前面加上整数部分的1,再左移52位之后,1 1110110111010010111100011010100111111011111001110111 B=8687443681197687。因此,原值就是8687443681197687右移52位,再左移6位,即右移46位,而246=70368744177664。

8687443681197687/70368744177664=123.456

关于C语言中怎么存储浮点数就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

存储 就是 指数 尾数 小数 部分 符号 偏移 点数 语言 二进制 原值 整数 内容 基数 更多 正负 计算机 帮助 不错 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 Java软件开发工程师级别 河南城建学院网络安全书籍 服务器点检及备份管理 软件开发项目经验英文介绍 如何将表对象导入到数据库文件中 贵阳金蝶eas软件开发公司 打开的数据库 如何查数据库 惠普服务器代理商名单 达梦数据库自主开发 江苏智能软件开发技术指导 天正v5.0服务器为空 青少年网络安全知识锦囊请收好 关于网络安全与文明的问答 我的世界服务器维护有什么补偿 佛山专业软件开发优化价格 软件开发什么时候需要做数据校验 我国主导的5G网络技术编码 瑞星网络安全威胁感知 服务器日志文件过大 物联网跟软件开发哪个好 桂林电子科技大学网络安全怎么样 数据库有效存储 删除网络安全助手 糖果短视频软件开发 杭州系统软件开发收费报价表 沈阳市万有引力网络技术 金宝宝软件开发 从事软件开发要读博士吗 软件开发专业哪些大学较好
0