十进制数246.15转换成十六进制数的过程???
发布网友
发布时间:2023-08-26 01:26
我来回答
共1个回答
热心网友
时间:2023-09-12 22:28
浮点数存储普遍使用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;
当然一般情况下是不需要进行手动的转换的
个人观点,如果有误请指正
(246.15)10=多少H?
将十进制数246.15转换为十六进制,可以按照以下步骤进行:整数部分:不断除以16,直到商为0为止,然后将每次的余数从下往上排列,得到的就是整数部分的十六进制表示。例如,246 ÷ 16 = 15 余 6,15 ÷ 16 = 0 余 15,因此整数部分为F6。小数部分:不断乘以16,直到小数部分为0为止,然后将每次...