打印

浮点显示问题(在线等)

[复制链接]
1863|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
geergeer|  楼主 | 2007-8-29 10:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
首先对浏览帖子的大侠表示由衷的感谢!小弟使用的是16f877的芯片,在project里把double类型改成32 bit,然后有以下语句:double test=50.265;
然后运行程序后,小弟在watch中观察test变量的值,用hex显示为42H 49H 0FH 5CH,但是这和小弟先前看过的一篇文档不符,该文档说法如下:

 十进制数转换成浮点数

    设:十进数为A,则2Z=A,Z= lnA/ln2,指数P=int(z);尾数部分X: X=A/2P, 其整数部分隐含为1(零除外),将其小数部分按原码格式化为二进制数,即为尾数的小数部分BY0 BY1 BY2。而指数偏差eb=P+7FH(其中的7FH 为指数的偏移量)。符号位S,视十进制数的正负而确定。

    例如十进制数50.265化为32位规格化浮点数:A=50.265,则Z=ln50.265/ln2,P=int(Z),故P=5; X=A/2P=50.265/25=1.57078125,将0.57078125化为23位二进制小数,即是BY0 BY1 BY2,在最高位添上十进制数的符号位S(因十进制数为正数,故S=0);而eb=P+7FH,所以,十进制数50.265的32位规格化浮点数即为84H,49H,0FH,5CH。

请大侠赐教~~是文档说法有误,还是小弟哪里理解或操作有误呢?
沙发
computer00| | 2007-8-29 10:23 | 只看该作者

84H,这不是负数么?

使用特权

评论回复
板凳
geergeer|  楼主 | 2007-8-29 12:06 | 只看该作者

小弟也觉得奇怪,之前一直没关心过这类问题,估计是文档

使用特权

评论回复
地板
geergeer|  楼主 | 2007-9-2 16:29 | 只看该作者

顶一下,还有哪位大侠愿意指点一二吗

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

13

主题

54

帖子

0

粉丝