进制表示以及转换

不同进制数的表示

数的根本乃是对于数量的统计。一个n进制的数,其核心定义为:

\[[a_{p}\cdots a_{2}a_{1}.a_{-1}a_{-2}\cdots a_{q}]_{n} = a_{p}*n^{p-1}+\cdots +a_{2}*n^{1}+a_{1}*n^{0}+a_{-1}*n^{-1} + a_{-2}*n^{-2}\cdots a_{q}*n^{q} \]

  • 左侧是该数的符号表示
  • 右侧是该数的实际数量表示。而n则是决定了该数每一位的权值,也就是进制。

转换

转换的核心仍然是数的定义,及上述的公式。

\[[a_{p}\cdots a_{2}a_{1}.a_{-1}a_{-2}\cdots a_{q}]_{n} = a_{p}*n^{p-1}+\cdots +a_{2}*n^{1}+a_{1}*n^{0}+a_{-1}*n^{-1} + a_{-2}*n^{-2}\cdots a_{q}*n^{q} \]

如果你能够以任意进制计算公式右侧的数量,那么恭喜你,你可以不用继续向下看了,因为你已经完成了对于任意进制之间的转换,而且十分的高效。

但是,一般人,比如说我,仅仅会以十进制完成计算,那么就必须以十进制为基点(桥梁)来完成其他进制的转换工作。所以下面的转换将以十进制为核心展开。

n进制》十进制

\[[a_{p}\cdots a_{2}a_{1}.a_{-1}a_{-2}\cdots a_{q}]_{n} = a_{p}*n^{p-1}+\cdots +a_{2}*n^{1}+a_{1}*n^{0}+a_{-1}*n^{-1} + a_{-2}*n^{-2}\cdots a_{q}*n^{q} \]

十进制》n进制

将十进制将n进制进行转换时,需要将概述的整数部分以及小数部分进行分离,因为它们使用的是完全不同的方法,甚至是对立的。

整数部分

\[\begin{align} && [m]_{10} & = [a_{p}\cdots a_{2}a_{1}]_{n} \\ && [[m]_{10} & = a_{p}*n^{p-1}+\cdots +a_{2}*n^{1}+a_{1}*n^{0}\\ \end{align} \]

我们的目的,就是计算得到 {a1, a2,... , ap} 。

需要注意的是:两侧的运算都是十进制运算。

计算流程为:

  • 将m进行除以n,那么余数为a1,商为m1
  • 将m1进行除以n,那么余数为a2,商为m2
  • .....
  • 最终,余数为ap,商为0。

上面的方法可以形式化为:

img

小数部分

\[\begin{align} && [m]_{10} & = [0.a_{1} a_{2}\cdots a_{q}]_{n} \\ && [[m]_{10} & = a_{1}*n^{-1}+a_{2}*n^{-2}+\cdots+a_{q}*n^{-q}\\ \end{align} \]

我们的目的,就是计算得到 {a1, a2,... , ap} 。

需要注意的是:两侧的运算都是十进制运算。

计算流程为:

  • 将m进行乘n,那么整数部分为a1,小数部分为m1
  • 将m1进行乘n,那么整数部分为a2,小数部分为m2
  • .....
  • 最终,整数数部分为ap,小数部分为0。

引用

引用自:理解进制转换的原理

posted @ 2020-10-17 16:11  zqybegin  阅读(430)  评论(0编辑  收藏  举报