除k取余法,主要用于把十进制的数化为k进制的数。

原理:

  • 不同进制的数之间可以相互转化。
  • 任意 k进制数,都可以写作 an*kn + an-1*kn-1 + an-2*kn-2 + …… + a1*k1 + a0*k0按权展开式
  • k进制中,k是确定的,各个位的位权也是确定的,那么进制转换的本质就可以理解为:求各个位之前的系数 an、 an-1、 an-2…… a1、 a0 的值

例子:

将十进制数36转二进制表示?

  1. 因为不同进制的数之间可以相互转化,所以十进制必然可以转化为二进制,则可以设:
    36 = an*2n + an-1*2n-1 + an-2*2n-2 + …… + a1*21 + a0*20
  2. 对 十进制数36 和 36的二进制展开式 除 k(这里的 k=2):
         2|   36  ····· 0                      2 | an*2^n + …… + a2*2^2 + a1*2^1 + a0*2^0     ····· a0
           —————                                 —————————————————————————————————————————————
          2|  18  ····· 0                        2 | an*2^(n-1) + …… + a2*2^1 + a1*2^0        ····· a1  
           —————                                   ___________________________________________  
           2|  9  ····· 1                          2 | an*2^(n-2) + …… + a3*2^1 + a2*2^0      ····· a2
            ____                                     _________________________________________
            2| 4  ····· 0                            2 | an*2^(n-3) + …… + a4*2^1 + a3*2^0    ····· a3 
             ———                                       ———————————————————————————————————————
             2|2  ····· 0                              2 | an*2^(n-4) + …… + a5*2^1 + a4*2^0  ····· a4
              ——                                         —————————————————————————————————————
               1  ····· 1                                  a5                                 ····· a5        
  3. 根据第二步的对比,可知:
    n=5;且 a5=1,a4=0,a3=0,a2=1,a1=0,a0=0 。
    所以 36 的二进制表示为 100100 。

任意进制转换

根据以上原理,可以使用 除k取余法 实现任意进制之间的转换。
如:将五进制数32转三进制表示:

        3|  32 ····· 2              3 | an*3^n + …… + a2*3^2 + a1*3^1 + a0*3^0     ····· a0
         —————                        —————————————————————————————————————————
         3| 10 ····· 2                3 | an*3^(n-1) + …… + a2*3^1 + a1*3^0        ····· a1
          ————                          ———————————————————————————————————————
             1 ····· 1                      a2                                     ····· a2

则 五进制数32 的三进制表示为 122 。