进制转换
考虑一种较为特殊的数位拆解——进制转换。进制转换与数位拆解一样,最终目的是要求各个数位上的数字。不同的是,数位拆解要求的是十进制表示的数字各个数位上的数字,而进制转换求的则是以某种进制表示的数字用另一种进制来表示时各个数位上的数字。
把从m进制转换到n进制转化为两个进制转换问题:
1.从m进制转换到十进制
2.再从十进制转换到n进制
这样只需掌握十进制与其他进制的相互转换就可以完成任意进制间的转换。
以十进制转换为二进制为例,有十进制数x,完成转换其为二进制,即求b0,b1,b2…bn满足
依照数位拆解方法,首先对x模2,即:
这样就得到该数字由二进制表示时最低位的数字。接下来对x做整数除法,对其除2,即可同样将高位数字向低位移动,即:
再通过求模运算依次求得被移动到最低位的数字,直到得到所有数位上的数字。
反过来将二进制转换为十进制较容易,只需依次计算各个数位上的数字与该位权重的乘积再将它们求和,即可得到十进制数字。
总结,当要求十进制数x的k进制表示时,只需不断重复对x求余(模k),求商(除以k),即可由低到高依次得到各个数位上的数。反过来,要求得由k进制表示的数字的十进制值时,需要依次计算各个数位上的数字与该位权重的积,第n位则权重为k^(n-1),然后将它们依次累加即可得到该十进制值。