社区
C语言
帖子详情
浮点数是如何储存的?
「已注销」
2012-02-12 09:29:42
为什么实用浮点数的时候有时候会丢失精度?希望各位会的大神们能够详细解答一下。
...全文
422
16
打赏
收藏
浮点数是如何储存的?
为什么实用浮点数的时候有时候会丢失精度?希望各位会的大神们能够详细解答一下。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
16 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
「已注销」
2012-02-20
打赏
举报
回复
32位采用的是IEEE754
「已注销」
2012-02-20
打赏
举报
回复
明白了~~
今天老师讲了
赵4老师
2012-02-17
打赏
举报
回复
用10进制小数不能精确表示某些三进制小数0.1(3)=0.33333333333……(10)
同理,用二进制小数也不能精确表示某些10进制小数。
「已注销」
2012-02-16
打赏
举报
回复
[Quote=引用 10 楼 c090869 的回复:]
引用 5 楼 fengzshizhe 的回复:
引用 4 楼 arnold9009 的回复:
0.1 = 0.0 0011 0011 0011 0011 0011 0011 .....(无限循环)
那为什么0.1的表示形式是这样的呢?
因为 0.1=1.0/16 1.0/32 1.0/(32*16) 1.0/(32*32)........
[/Quote]分母是什么意思…?怎么来的…
「已注销」
2012-02-16
打赏
举报
回复
[Quote=引用 10 楼 c090869 的回复:]
引用 5 楼 fengzshizhe 的回复:
引用 4 楼 arnold9009 的回复:
0.1 = 0.0 0011 0011 0011 0011 0011 0011 .....(无限循环)
那为什么0.1的表示形式是这样的呢?
因为 0.1=1.0/16+1.0/32+1.0/(32*16)+1.0/(32*32)........
[/Quote]分母是什么意思…?怎么来的…
goodwithcode
2012-02-12
打赏
举报
回复
二进制、?
duyufeng1995
2012-02-12
打赏
举报
回复
fu点型变量在计算机内存中占用4字节(Byte),即32-bit
seucs
2012-02-12
打赏
举报
回复
等你学过数据在计算机中的存储方式后就自然明朗了,知识需要一点一滴的积累的
「已注销」
2012-02-12
打赏
举报
回复
[Quote=引用 4 楼 arnold9009 的回复:]
0.1 = 0.0 0011 0011 0011 0011 0011 0011 .....(无限循环)
[/Quote]
那为什么0.1的表示形式是这样的呢?
Arnold9009
2012-02-12
打赏
举报
回复
lz看一下IEEE754浮点数标准吧
IEEE规定的浮点数的机器表示:
32位机器的 float 是4字节的,共32位。
第1位是符号位,接着8位指数位,接着23位基数位。
以5.1为例。
5 = 101 (2进制)
0.1 = 0.0 0011 0011 0011 0011 0011 0011 .....(无限循环)
所以 5.1 = 101.0 0011 0011 0011 0011 0011 0011 0011 0011 ...
5.1= 1.010 0011 0011 0011 0011 0011 0011 0011 0011 0011... * 2^2
因为第一位总是为1,如果是0,就移动小数点直到是非0的,所以第一位的1丢弃。
得到 010 0011 0011 0011 0011 0011 0011 0011 0011....
取23位 得到 0100 0110 0110 0110 0110 011
接着看指数部分
指数是2, 根据规定,指数统一+127再转换为无符号8位2进制数,
2+127=129 (1000 0001)
存储的时候指数部分存储在基数之前,这样就有31位了,
因为5.1是正的,所以符号为是0,存储在指数部分之前
这样就得到 0100 0000 1010 0011 0011 0011 0011 0011
caddor
2012-02-12
打赏
举报
回复
fpu,浮点数运算,在汇编中有介绍,蛮复杂的,
汇编一般先将整形,后将 浮点数
「已注销」
2012-02-12
打赏
举报
回复
那什么事浮点寄存器,浮点寄存器是怎样操纵的?
[Quote=引用 1 楼 ghj123h 的回复:]
引用 《C程序设计》
浮点数在浮点寄存器中,以指数型是存在,前面是小数,后面是指数。
由于浮点寄存器大小有限,所以会丢失精度
++
[/Quote]
正在无聊中
2012-02-12
打赏
举报
回复
[Quote=引用 《C程序设计》]
浮点数在浮点寄存器中,以指数型是存在,前面是小数,后面是指数。
由于浮点寄存器大小有限,所以会丢失精度
[/Quote]
++
如此美丽的你
2012-02-12
打赏
举报
回复
看<<深入理解计算机系统>>
c090869
2012-02-12
打赏
举报
回复
[Quote=引用 5 楼 fengzshizhe 的回复:]
引用 4 楼 arnold9009 的回复:
0.1 = 0.0 0011 0011 0011 0011 0011 0011 .....(无限循环)
那为什么0.1的表示形式是这样的呢?
[/Quote]
因为 0.1=1.0/16+1.0/32+1.0/(32*16)+1.0/(32*32)........
bluewanderer
2012-02-12
打赏
举报
回复
float类型
最高位是符号位,后面8位是指数,最后23位是2进制有效数字的小数部分,一共32位。
符号位0表示正数,1表示负数。指数表示有效数字要乘以2的多少次方,127表示0次方,126表示-1次方,128表示1次方,0是无穷小,255是无穷大。有效数字整数部分永远是1,所以省略,加上23位小数部分一共24位有效数字。
double类型,差不多区别是指数一共11位,有效数字小数部分52位,一共64位。
关于C语言
浮点数
的存储
浮点数
在C语言中的存储方式是一个复杂而重要的主题,涉及到计算机硬件、内存表示以及编程语言规范等多个方面。本文将深入探讨
浮点数
在C语言中的表示和比较,以及由此引发的一些问题。 首先,我们需要了解
浮点数
的...
关于
浮点数
的精度问题
浮点数
的精度问题是由于计算机对
浮点数
的存储方式和表示方法所致。 IEEE754 的
浮点数
存储格式对
浮点数
的表示方法进行了规定。
浮点数
可以分为三部分:符号位、指数位和尾数位。符号位用于表示
浮点数
的正负号,指数...
TMS320C3x
浮点数
简介、IEEE754的32位转VC33的32位
浮点数
算法、IEEE754的64位
浮点数
转VC33的40位
浮点数
算法
4.
浮点数
的存储和内存表示 在内存中,40位
浮点数
实际占用64位空间(即8个字节),但名称上仍称为40位
浮点数
,因为其40位是关键表示部分,其余位是辅助性的,与主要位相同。这种结构的设计既保持了数值的有效表示,...
浮点数
与16进制转换(含源代码)_单片机_
浮点数
_转换_十六进制_实数_
1. **
浮点数
的表示**:
浮点数
在计算机内部通常按照IEEE 754标准存储,分为单精度(32位)和双精度(64位)两种格式。单精度
浮点数
由1位符号位、8位指数位和23位尾数组成;双精度则有1位符号位、11位指数位和52位尾数...
float_2_char.zip_C51 float转char_单片机
浮点数
_
浮点数
char_
浮点数
转换_
浮点数
转换
`float_2_char.zip` 提供的代码着重解决了单片机中
浮点数
(`float`)与字符型(`char`)之间的转换问题,这对于节省存储空间、提高通信效率以及降低错误率非常有用。下面将详细介绍
浮点数
与字符型之间的转换原理和...
C语言
70,021
社区成员
243,263
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章