永发信息网

十进制数246.15转换成十六进制数的过程?????

答案:1  悬赏:20  手机版
解决时间 2021-12-02 12:42
  • 提问者网友:爱了却不能说
  • 2021-12-02 06:00
十进制数246.15转换成十六进制数的过程?????
最佳答案
  • 五星知识达人网友:忘川信使
  • 2021-12-02 06:07
浮点数存储普遍使用IEEE标准.
首先要看是单精度float还是双精度double
此处假设为单精度,双精度类似
对float,共32位,从高位到低位分别为1位的符号位,8位阶码,23位尾数
246.15为正数,符号位为0.
246.15包含整数部分 246;小数部分0.15;
整数部分直接转换为2进制形式:11110110b;
小数部分具体转换比较麻烦,我给你说下我的算法:
0.15
1:2*0.15 = 0.3 ,0.3<1 第一位为0
2:2*0.3 = 0.6 ,0.6<1 第二位为0
3:2*0.6 = 1.2 ,1.2>1 第三位为1,此时要把1.2 =1.2 - 1
4:2*0.2 = 0.4 ,第四位为0,原理同上
5:2*0.4 = 0.8 ,第五位为0
6:2*0.8 = 1.6 ,第六位为1
7:2*0.6 = 1.2 ,第七位为1
8:2*0.2 = 0.4 ,第八位为0,后面的就是循环了,看第5-8步
.
.
.
加上整数位算够24位 ,不够24位用0补够,此处小数位算16位, 算出来的结果应该为0010 0110 0110 0110b;
此时便可转换246.15为二进制形式11110110.0010 0110 0110 0110
也可表示成1.111 0110 0010 0110 0110 0110b * 2^7;
注意指数为7,解码为8位2进制数,此数即可表示正也可表示负,约定把指数+(2^7-1)作为阶码
就是 7 +(2^7-1) = 134 = 10000110b作为阶码
科学计数法第一位都为1,在IEEE标准中可以省略
此时就得出了246.15的IEEE形式:
符号位 0b
阶码 10000110b
尾数 111 0110 0010 0110 0110 0110b
组合起来就是 0 10000110 111 0110 0010 0110 0110 0110b
转为16进制为 0x43762666;
当然一般情况下是不需要进行手动的转换的

个人观点,如果有误请指正
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯