十进制数转换为其他进制数的方法
为了使问题简化,首先我们讨论只有整数部分的数的转换。假设我们要将一个十进制数4009转化成一个16进制数,也就是要将4009表示成(k2k1k0)16(这里,k2、k1、k0是0~15之间的整数。我们假设需要用3位16进制数表示)。则根据16进制数的定义:4009=k2×162+k1×161+k0×160=k2×162+k1×16+k0=(k2×16+k1)×16+k0从上面的式子我们看出,是4009被16除之后的余数。(k2×16+k1)k0因为×16是可以被16整除的,且商数为k2×16+k1。如果将此商数再次用16去除,则得到的余数是k1,商数为k2。这向我们指出了求k0、k1、k2的方法如下:(1)先用16除4009,得到的商为250,余数为9。则k0=9;(2)再用上一步的商250除以16,得到的商为15,余数为10。则k1=10;k2=15。根据表2-1,k1用16进制符号A表示,k2用16进制符号F表示。则有:4009=(FA9)16如果我们将上述计算过程用称为“长除法”的算式表示出来,会更加清晰:164009余数16250……………9K01615……………10K10……………15K2在上述算式中,每次我们将得到的余数写在右边,将商写在下面,这样就可以一直除下去。如此先后得到的余数,就是从低位到高位排列的16进制数各位的数码。这种方法显然可以推广到更大的数的转化。例2-1:将整数6890转换为16进制数。算式为:166890余数16430…………………101626…………………14k1161…………………100…………………1k0
k2k3
则:6890=(1AEA)16注意,在上面用长除法作数制转换时,我们一直要将除法进行到商为0止。这种转换方法,同样也可以推广到将十进制数转化成8进制数和2进制数的计算。例2-2:将十进制数4009转换为8进制数。算式为:840098501………………1
f862………………587………………60………………7则:4009=(7651)8例2-3:将十进制数4009转换为2进制数。算式为:2400922004………………121002………………02501………………02250………………12125………………0262………………1231………………0215………………127………………123………………121………………10………………1于是,4009=(111110101001)2由此,我们可以总结出将十进制整数转化为q进制整数的方法是,用q不断除该十进制整数,直到商为0。每次除的余数即为q进制各位的数码。最初得到的为整数的最低位,最后得到的为最高位。上面我们没有考虑小数的转换。假设我们要将小数0891转换为16进制小数,则就是要将0891表示成0k1r