从一种碱基转换为另一种碱基的最简单技巧是分组。要在基数b和基数b k之间进行转换,请将数字分组为k组,并一次转换一组。例如,要从二进制转换为八进制,请从右端开始将位分成三个一组,然后将每个组转换为八进制。
11110010二→ (11)(110)(010) → 362八
作为另一个方向的示例,让我们将 9 进制的 476 转换为 3 进制。
476九→ (11)(21)(20) → 112120三
一般来说,基数之间的转换太繁琐,无法手动完成,但一个重要的情况是十进制和八进制之间的转换比实际要容易一些。结合上面的分组技巧,这意味着您可以通过首先将十进制转换为八进制来在十进制和二进制之间进行转换。那么从八进制到二进制的转换就很简单了。
十进制和八进制之间转换的关键是利用 10 = 8 + 2 的事实,因此 10 的幂变为 (8 + 2) 的幂,或者 8 的幂变为 (10 − 2) 的幂。这些技巧实施起来比解释起来容易。您可以在 Knuth 的 TAOCP 第 2 卷第 4.4 节中找到描述和示例。
Knuth 引用了 Walter Soden 1953 年的一篇笔记,作为将八进制转换为十进制技巧的第一个描述。
在底数 9 和底数 10 之间移动(或通过分组在底数 3 和底数 10 之间移动)的技巧更简单,并被 Knuth 留作练习。 (第 4.4 节中的问题 12,在卷的后面给出了解决方案。)
相关帖子
手动基数转换的技巧帖子首次出现在John D. Cook上。
原文: https://www.johndcook.com/blog/2025/01/23/radix-conversion/