社区
C语言
帖子详情
一个关于浮点数的存储问题.
th362cn
2005-03-18 03:05:07
我最近学习c语言.书上说浮点数在内存中的顺序是:
符号位 隐藏的小数点 小数 指数
这样的排列顺序.想请教各位高手.
就TC2.0而言,float型和double型的"小数位"和"指数位"各是多少位二进制?
为何float型浮点数有效数字只有7位?
...全文
131
4
打赏
收藏
一个关于浮点数的存储问题.
我最近学习c语言.书上说浮点数在内存中的顺序是: 符号位 隐藏的小数点 小数 指数 这样的排列顺序.想请教各位高手. 就TC2.0而言,float型和double型的"小数位"和"指数位"各是多少位二进制? 为何float型浮点数有效数字只有7位?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
th362cn
2005-03-18
打赏
举报
回复
谢谢了.
寻开心
2005-03-18
打赏
举报
回复
关于32位浮点数的结构,你可以看我的btlog当中的描述部分
http://btlog.csdn.net/happy_888
根据IEEE的标准,浮点数的定义如下
符号位 指数位 小数部分 指数偏移量
单精度浮点数 1 位[31] 8位 [30-23] 23位 [22-00] 127
双精度浮点数 1 位[63] 11 位[62-52] 52 位[51-00] 1023
我们以单精度浮点数来说明:
符号位,表述浮点数的正或者负
指数实际也有正负的,但是没有单独的符号位,而是采用了一个偏移来表示
在计算机的世界里,进位都是二进制的,指数表示的也是2的N次幂
这个数据格式当中的,指数是8位,可表达的范围是0到255
而对应的实际的指数是-127到+128
这里特殊说明,-127和+128这两个数据在IEEE当中是保留的用作多种用途的
-127表示的数字是0
128和其他位数组合表示多种意义,最典型的就是NAN状态
小数部分,并不是一个浮点数的实际的小数
实际的小数在这个小数前面还保留了一个1
拿浮点数1.0来说
符号位是0, 实际指数是0,对应这里的指数就是127了,也就是0x7f
而小数部分就是1.0了, 1是暗含的不存储,实际的小数部分就是0了
因此组合起来的数据就是,0x3f80000
16位的也是类似的,自己分析一下
WORD w = *((WORD*)(&f))
是把一个浮点数按照内存结构转化成为一个unsigned int 16位的结构
TC 2.0不是C++ ,是c++的话就可以简单 w = (int&) f; 就可以了
th362cn
2005-03-18
打赏
举报
回复
我没领会你的意思.WORD 和DWORD 引导的是何物?如何使用?
寻开心
2005-03-18
打赏
举报
回复
无论在什么系统上,对于一个数据类型来说,使用c语言的sizeof函数都可以知道它的大小是2个字节还是4个字节
对于16位的系统,tc2.0来说, float 是16位, double是32位的
根据ieee的浮点数标准是可以精确的知道组成float或者double的各个位的情况的
无论你是出于什么目的来研究这个结构,都可以用下面的方法获得它的各个位的状况
float f;
double d;
WORD w = * ((WORD * )( &f))
DWORD dw = * ((DWORD * )( &f))
关于
浮点数
的精度
问题
关于
浮点数
的精度
问题
,对于了解和学习C语言有一定帮助
浅析C语言中的
浮点数
.pdf
浅析C语言中的
浮点数
.pdf
浮点数
转换工具(十六进制转
浮点数
)
非常适用的小工具,绿色软件,不用安装,
浮点数
转换工具(十六进制转
浮点数
)
双精度
浮点数
转换
双精度
浮点数
、单精度
浮点数
与十六进制,二进制之间可以进行任意转换
C#
浮点数
和16进制字节数互相转换
该代码可以实现单精度
浮点数
和16进制字符之间的转换,包含源代码
C语言
70,021
社区成员
243,263
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章