10进制带小数点数值转16进制内存的换算方法求教

Safersky 2015-05-13 12:42:25
如图

我用Winhex查看某档案的内存,发现红圈里面的数值实际上显示为97.62%(红圈对上相同区域的数值为98.29%),这后面的3F有可能代表%或者是小数点吗?因为我看见每个有百分比数值的地方后面都会有个3F。。。
还有我不知道这种带百分比十进制的数值是怎样转换成16进制的。。
请大神详细教导谢谢!!
...全文
867 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Safersky 2015-05-14
  • 打赏
  • 举报
回复
非常感谢上面几位老师教导!
赵4老师 2015-05-13
  • 打赏
  • 举报
回复
fly_dragon_fly 2015-05-13
  • 打赏
  • 举报
回复
直接写个程序打开看一下,不嫌麻烦这样做 打开计算器 把上面的3F79EB38,转成二进制为 00111111011110011110101100111000 蓝的为符号,0为正数,8位指数为126,按标准要减去127,这里为-1,剩下为尾数,前面省略了1,现在要补上为 1.11110011110101100111000这是二进制小数,前面指数为-1,所以这个数最终为 0.111110011110101100111000,再次使用计算器把这个数算回来,倒数算回来,从最后一位开始,跳过0,遇到1,直接除2,下一位为1,就加上1,再除2,遇0就直接除,一直到没有1,计算器结果为 0.976245403289794921875
ForestDB 2015-05-13
  • 打赏
  • 举报
回复
[root@localhost x]# cat x.c 
# include <stdio.h>

void show(unsigned char * p, int n)
{
    int i;
    for (i = 0; i < n; i++)
        printf("%hhx", p[i]);
    printf("\n");
}

int main()
{
    float a = .9762f;
    show(&a, sizeof(a));

    return 0;
}
[root@localhost x]# ./x 
3ee8793f
ForestDB 2015-05-13
  • 打赏
  • 举报
回复
请学习IEEE 754浮点数表示方法。

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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