十进制和八进制,十六进制之间的转换,笔算

354 阅读1分钟

前言

在面试中,会遇到不同进制的数值相互转换,例parseInt("4F", 16),除此之外还有:['1', '2', '3'].map(parseInt),不能使用电脑或者手机的情况下,我们需要了解他们的转换算法,以快速的得到答案。

八进制,十六进制转十进制

其他进制转十进制个人总结了一个公式,猜测道友应该已经总结过了,此处写出来只是自己探索的过程。

ABC=AM2+BM1+CM0=十进制ABC = A*M^{2}+B*M^{1}+C*M^{0} = 十进制

注:M代表进制,A, B, C代表相应的数字

进制实例
十六进制3AC=3162+10161+12160=9403AC = 3*16^{2}+10*16^{1}+12*16^{0} = 940
八进制1654=183+682+581+480=9401654 = 1*8^{3}+6*8^{2}+5*8^{1}+4*8^{0} = 940

十进制转八进制,十六进制

完成上述公式总结后,思考:假如遇到十进制转其他进制,该如何处理呢?本想搜索一下资料,但是想起来初中老师教过如何笔算开平方。尝试着得到以下公式,没想获得了正确的结果。 第一此用数值除以进制数值,之后每次用商除以进制数值,直至商的值小于进制的值,获得的商和余数反序整合。

十六进制: 94016}{5812(C)\left.\begin{matrix} \frac{940}{16} \end{matrix}\right\} \Rightarrow \left\{\begin{matrix} 商 58 \\ 余12({\color{red}C}) \end{matrix}\right. 继续计算 1658}{310(A)\left.\begin{matrix} \frac{16}{58} \end{matrix}\right\} \Rightarrow \left\{\begin{matrix} 商{\color{red}3} \\ 余10({\color{red}A}) \end{matrix}\right. 3AC\Rightarrow \color{red}3AC

八进制: 9408}{1174\left.\begin{matrix} \frac{940}{8} \end{matrix}\right\} \Rightarrow \left\{\begin{matrix} 商 117 \\ 余{\color{red}4} \end{matrix}\right. 继续计算 1178}{145\left.\begin{matrix} \frac{117}{8} \end{matrix}\right\} \Rightarrow \left\{\begin{matrix} 商14 \\ 余{\color{red}5} \end{matrix}\right. 继续计算 148}{16\left.\begin{matrix} \frac{14}{8} \end{matrix}\right\} \Rightarrow \left\{\begin{matrix} 商{\color{red}1} \\ 余{\color{red}6} \end{matrix}\right. 1654\Rightarrow \color{red}1654