如何将十进制345.75转换成十六进制
手工可以这样做:将整数部分除以16,取余数反过来;小数部分乘以16,取前整数。然后小数点位置不变,把它们写在一起就行了——大于9的余数或整数要用对应的十六进制符号表示。
整数部分:
345÷16 = 21?九
?21÷16 = ?1以上?五
1÷16 = ?大于0?1
求余数的倒数得到159。
小数部分:
0.75x16 =?12.0(十六进制的C)
?0.0x16 =?0
正向舍入整数得到0.c。
所以十进制数345.75的十六进制表示是159+0.c = 159.c。
如果你想编程,可以把上面的想法变成代码。我们以C为例:
#包含?" stdio.h "
#包含?& ltstring.h & gt
int?主要(无效){
双倍?x=345.75,m;
int?I,n,t;
夏尔?s[]="0123456789ABCDEF ",h[10];
for(i=0,n =(int)x;n;h[i++]=s[n%16],n/= 16);
h[I]= ' \ 0 ';
strrev(h);
for(h[i++]= ' . ',n=6,m = x-(int)x;m?& amp& amp?n-;h[i++]=s[t=int(m*16)],(m * = 16)-= t);
h[I]= ' \ 0 ';
printf("%g(10)?=?%s(16)\n ",x,h);
回归?0;
}