前言
在面试中,会遇到不同进制的数值相互转换,例parseInt("4F", 16),除此之外还有:['1', '2', '3'].map(parseInt),不能使用电脑或者手机的情况下,我们需要了解他们的转换算法,以快速的得到答案。
八进制,十六进制转十进制
其他进制转十进制个人总结了一个公式,猜测道友应该已经总结过了,此处写出来只是自己探索的过程。
ABC=A∗M2+B∗M1+C∗M0=十进制
注:M代表进制,A, B, C代表相应的数字
| 进制 | 实例 |
|---|
| 十六进制 | 3AC=3∗162+10∗161+12∗160=940 |
| 八进制 | 1654=1∗83+6∗82+5∗81+4∗80=940 |
十进制转八进制,十六进制
完成上述公式总结后,思考:假如遇到十进制转其他进制,该如何处理呢?本想搜索一下资料,但是想起来初中老师教过如何笔算开平方。尝试着得到以下公式,没想获得了正确的结果。
第一此用数值除以进制数值,之后每次用商除以进制数值,直至商的值小于进制的值,获得的商和余数反序整合。
十六进制:
16940}⇒{商58余12(C)
继续计算
5816}⇒{商3余10(A)
⇒3AC
八进制:
8940}⇒{商117余4
继续计算
8117}⇒{商14余5
继续计算
814}⇒{商1余6
⇒1654