关于定点数和浮点数转换的问题

solomon108 2009-06-10 09:44:21
在《Trick of the 3D Game Programming Gurus》这本书上看到以下关于定点数和浮点数转换的代码:

#define FIXP16_MAG 65536

// convert float to fixed point 16.16
#define FLOAT_TO_FIXP16(f) (((float)(f) * (float)FIXP16_MAG+0.5))

// convert fixed point to float
#define FIXP16_TO_FLOAT(fp) ( ((float)fp)/FIXP16_MAG)

书中的32位定点数是由16位整数和16位小数组成的
float类型是由1位符号位、8位阶码和23位尾数组成的

两种表示方式不同的数据是怎么通过简单的移位和加法实现转换的,原理是什么呢?还是书里写错了?
...全文
277 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
magipan 2009-06-11
  • 打赏
  • 举报
回复
不懂,不是把小数放大变成整数,相应整数再缩小变回来?
solomon108 2009-06-11
  • 打赏
  • 举报
回复
up
solomon108 2009-06-11
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 magipan 的回复:]
不懂,不是把小数放大变成整数,相应整数再缩小变回来?
[/Quote]

这样变换能保证表示的值相同吗?
liliangbao 2009-06-10
  • 打赏
  • 举报
回复
up

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧