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

我用Winhex查看某档案的内存,发现红圈里面的数值实际上显示为97.62%(红圈对上相同区域的数值为98.29%),这后面的3F有可能代表%或者是小数点吗?因为我看见每个有百分比数值的地方后面都会有个3F。。。
还有我不知道这种带百分比十进制的数值是怎样转换成16进制的。。
请大神详细教导谢谢!!
------解决思路----------------------
------解决思路----------------------
直接写个程序打开看一下,不嫌麻烦这样做
打开计算器 把上面的3F79EB38,转成二进制为
00111111011110011110101100111000
蓝的为符号,0为正数,8位指数为126,按标准要减去127,这里为-1,剩下为尾数,前面省略了1,现在要补上为
1.11110011110101100111000这是二进制小数,前面指数为-1,所以这个数最终为
0.111110011110101100111000,再次使用计算器把这个数算回来,倒数算回来,从最后一位开始,跳过0,遇到1,直接除2,下一位为1,就加上1,再除2,遇0就直接除,一直到没有1,计算器结果为 0.976245403289794921875
------解决思路----------------------
http://bbs.****.net/topics/390676437
如图
我用Winhex查看某档案的内存,发现红圈里面的数值实际上显示为97.62%(红圈对上相同区域的数值为98.29%),这后面的3F有可能代表%或者是小数点吗?因为我看见每个有百分比数值的地方后面都会有个3F。。。
还有我不知道这种带百分比十进制的数值是怎样转换成16进制的。。
请大神详细教导谢谢!!
------解决思路----------------------
[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
------解决思路----------------------
直接写个程序打开看一下,不嫌麻烦这样做
打开计算器 把上面的3F79EB38,转成二进制为
00111111011110011110101100111000
蓝的为符号,0为正数,8位指数为126,按标准要减去127,这里为-1,剩下为尾数,前面省略了1,现在要补上为
1.11110011110101100111000这是二进制小数,前面指数为-1,所以这个数最终为
0.111110011110101100111000,再次使用计算器把这个数算回来,倒数算回来,从最后一位开始,跳过0,遇到1,直接除2,下一位为1,就加上1,再除2,遇0就直接除,一直到没有1,计算器结果为 0.976245403289794921875
------解决思路----------------------
http://bbs.****.net/topics/390676437