到底几进制最有效率?
千舟之一
编辑于 2021年12月05日 18:03

二进制和十进制,两者谁更有效率?进而可以问,n进制谁更有效率?

第一次听到这个关于效率问题的时候,我立即想到的是:同样的数字用更少的位数的进制更有效率。但马上就想到这肯定不对呀。这显然N越大对应的位数越少。

虽然我后来搞清楚了这个问题。但是总觉得有些地方理解得不清楚,直到我想到了这个例子。假如你有一对小石子,你可以把它摆成若干堆,每一堆对应一个位来表示一个数字。那么同样数量的小石子,怎样摆能够表示最多的连续的数字。注意这里,因为需要用石子来占据一个位,所以必须用一个石子来表示0,两个石子表示1,以此类推。

不妨假设有50个石子,如果是10进制,那么可以分成5堆,每堆10个石子。表示99999。也可以分成6堆,第一堆2个,其他都是一个,表示100000。然后就只能表示到199998,虽然还可以表示更大的数字,但无法再连续了。为了下面的讨论简单一点,我们规定,100000到199998也视为表示不完整,不计入统计。这样50个石子恰好用十进制表示10^5 = 100000个数字。而用5进制可以表示5^10 = 9765625个数字,而2进制可以表示2^25 = 33554432。看起来n进制的n越小,能表示的数就越多,效率越高。

但用3进制一试,3^16 = 43046721。比2进制的效率还高。其他的n进制就不算了,它们都没有3进制高。

那么我们可不可以用数学的方法来证明一下呢?从上面的计算可以看出来,对于a个石子n进制的情况,可以表示n^(a/n)个数字(其实这儿需要取个整,不过不取整不影响结论)。这就是n的一个函数,要求这个函数的最大值,求个导就可以了。具体的计算就省了,得到的结果n并不是等于3,而是2.7182818...,也就是e。因为3最接近e,所以效率最高。好像问题已经搞清楚了,但这个e进制是什么东西呢?在没想到小石子的例子前,我也没明白这个问题。直到想到小石子的例子时,我才突然想到n进制也可以是小数。

还是看50个小石子的情况,在3进制下,我们把小石子分成16堆,每堆可以有1到3个石子。这样最多可以表示3^16 = 43046721个数。但我们可以把石子分成17堆,其中15堆用1到3个石子表示0,1,2。剩下两堆用1到2个石子表示0,1。这样一共可以表示3^15 * 2^2 = 57395628个石子。如果把这种方法看成是n = (3*15 + 2*2)/17 = 2.82352...进制。那么它更接近e,而效率更高。在这种混合进制中,当12位3进制,7位2制的时候效率最高2^7+3^12=68024448。但按(12*3 + 7*2)/19 = 2.631578...来算,这并不是最接近e的数。但也仅次于13位3进制,5位2进制的情况。这可能是因为小石子的总数比较小,容易受其他因素的影响。