因为不是。
所谓e进制“高效”的说法,是从信息量的角度推导出来的。
这个推导基于这样一个问题:“我们在何种进制下,可以用最少的符号表示最多的数字?”。
举个现实的栗子,这种倒计时的牌子:
在表示0-999一千个整数的情况下,
二进制需要10位数,准备20个牌子(10组0、1,下略);
三进制需要7位数,准备21个牌子[1];
四进制需要5位数,准备20个牌子;
五进制需要5位数,准备25个牌子;
……
十进制需要3位数,准备30个牌子。
……
所以我们可以说,在表达0-999这个问题上,二进制和四进制是“最高效”的。
但是显然的,这存在不公平——除了十进制,所有进制都有被“浪费”掉的部分。
因为我们在考虑“需要几位数”的时候是这么考虑的:
向上取整为10,10×2=20;
向上取整为7,7×3=21;
……
,3×10=30;
……
尤其对于三进制等,这个浪费是极大的。但是,换个数字的话,可能别的进制又遭到了“不公平待遇”。
所以,我们为了讨论更一般的,针对任意数字的情况,进行推广,接受“需要的位数可以为非整数”的情况,如此一来,便不再需要进行向上取整。
于是乎,我们为了表示M个数,在r进制下,需要 个“牌子”[2]。
因此,这个“效率”[3]我们可以表示为。
我们若再对r进行推广,接受“非整数进制”,便可以简单的求导得到r=e时E最大的结论。
这也就是 @梦星河 等大佬推导的问题。
到此处我们似乎的确证明了“e进制更高效”。但实际并非如此。
要问为什么的话,我们还需要回到最开始的问题:
因为,在现实生活中,购买任何一块牌子的价格是一样的。
无论是只印0和1,还是印0,1,2,单价都是一样的。20个牌子就是20倍的单价,21个牌子就是21倍的单价。
所以20块牌子就是便宜,就是高效,不用考虑别的因素。
至此,对计算机稍有常识的朋友此时就看出端倪了:
制造不同进制的计算机运算、储存单元,成本可不一样……
我们假设一个r进制bit成本函数为 ,那么,其“单个牌子”[4]的成本为 。
所以,此时,我们的“效率”[5]为。
当 时,就退化回了 的情况。
而 意味着什么?意味着制造不同进制元件的成本正比于进制,或者说单个符号成本相同。即上文举的倒计时牌子的情况。
亦即e进制元件的成本只是二进制元件的 倍。
这是显然不符合事实的。
从这个公式我们也可以很容易看出来一个结论:
只要 的增长速率大于对数级,进制越大,“效率”越低。
然而,可悲的现实就是,以我们目前的技术而言,的增长速率远远大于对数级、正比级,起码是多项式级的……
此外,并不是一个单调函数……甚至不是一个连续函数……
因为我们几乎做不出来非整数进制的计算机元件,所以在非整数域无定义(或者是趋向于无穷)……
所以,对于整个计算机系统而言,只有定义域内的最小整数——2,所对应的 是最高的。
但是对于部分元件,在2的指数倍进制上,成本增长速度还是低于对数级的。所以计算机局部上是可以有4,8,16等进制元件的。比如闪存NAND元件[6]。
综上,我们可以得出结论:
鉴于 @William Lee 多次删除我的评论,我就只能在这里发布对
的评价了。
不要用所谓“常识”去否定数学问题应该才是“常识”。
进制的本质是
2.5进制下,
进制下,
甚至可以有小于1的进制,但是那时我们可能需要定义新的符号用以代表数位上的数字(就像16进制下用A代表10)。
这些都是有很好的定义的,所以完全是合理的存在。
至于说什么“进位失去意义”,我只能说,整数进制下的性质不能类推到其他进制下,那是很正常的事情,不能因为这种现象就否定非整数进制的存在性与合理性。
当然,我承认,我在最开始解释的时候权数算错了,但这又不影响这个概念的正确性,而且我也改正过来了。
相反,我实在是想不明白对方强不认错,甚至删我的评论是怎么个想法……
当初只是刚好看到过e进制的说法所以随手答了一下,也没有解释的很清楚,没想到会有这么多大佬关注,我诚惶诚恐,又查了一些资料,对评论区的问题做一个统一回答吧。
1、e进制在数学上是怎么定义的?首先进制在数学定义中并没有限定只能是自然数, 对于任何一种进制——X进制,就表示每一位置上的数运算时都是逢X进一位,e进制中也是,e进制下每一位可能的状态就是{0,1,2},计算方法和其他整数进制也没有区别,举个例子就是 。更详细一些的进制转换表如下表。
2、e进制能否在计算机中怎么定义?对不起这个确实没办法,我想分数进制的话也许可以通过不同进制的组合来实现,将多位视作做一个整体来进行分析,但是e作为无理数我确实想不到怎么去准确地在计算机中实现e进制,或者说实现了也没办法用来准确的表示有理数,这也是题主的设想无法实现的原因。
3、 的意义到底是什么?这也是大家质疑比较多的一个问题,但是很遗憾这种计算方法也不是我原创的,我以前在某个博客上看到的觉得有道理就接受了,但是确实没有仔细考虑过N到底是什么含义,我找了蛮久也只找到别人复制的博客,并没有人给出具体的解释,我只能讲讲现在我自己的理解:
在目前的二进制计算机中,二进制数据在计算机的存取和传输中都是电压信号来表示的,电压高于阈值就是高(1),低于阈值就是低压(0),这是一件很自然的事情,完美贴合二进制的非此即彼的逻辑。上世纪苏联的三进制计算机则是用正电压(+1),零电压(0)和负电压(-1)来表示的,似乎从逻辑上也是只需要和0进行比较即可,但是在应用中电压不可能是准确0,所以其实还是划分了阈值的,并且至少是两个阈值,依旧是进行非此即彼的比较,不过有可能要比较2次。所以我一开始的思路是依此类推,认为 反映了计算机存取每一位的代价,但是经评论区提醒,按这种思路仔细考虑的话,如果我们假设电压值落在每一个区间的概率处处相等,对于r进制的数,我们要找出电压对应的逻辑值其实就是一个折半查找的过程,平均比较次数就是 的,这么看来我们用 来表示计算机存储和携带数据的代价并不合适,应该是 更合适,那么继续按照我之前的思路计算,最后的结果E就是一个只跟n相关的常数。这么说对于计算机来说采用2进制还是3进制的消耗其实是一样的吗?但是我们重新考虑一下上述推理中有一个重要条件,就是我们假设了电压值落在每一个区间的概率处处相等,这真的合理吗?显然在一个电路中电压的范围不会是整个数域,一般也不会是在取值范围内均匀分布的,它有自己的分布规律,这个规律是没法预知的,所以我认为没办法用这种方法来准确度量计算机存取一个r进制位的代价。我现在更倾向这种计算方式其实并不表征一个物理意义,只从逻辑上说明e进制下每一种状态所能携带的信息量是最大的。如果大家有更好的理解方式欢迎指出。
下图是维基百科中的说明,供大家参考,大家也可以自行搜索底数经济度进一步了解:
我先解释一下题主说的e进制最“高效”是怎么来的吧。
假设我们用n个r进制位来表示一个数,那么能表示的数的数量最多就是 ,这就是用n个r进制位能携带的最大信息量,此时我们一共需要 个符号。在实际应用中我们通常知道我们需要的这个上限M,所以把它作为一个常量,那么就得到 ,每个符号能携带的信息量就是 。
求导易得当r=e(e为自然对数的底)时E取得最大值。
而且事实上r=3时比r=2时E值更大。所以也有人提出过3进制计算机的设想,甚至上世纪就有人实现过,使用正电压(+)、零电压(0)、负电压(-)表示三种状态,但是后来并没有掀起什么波澜,因为在集成电路时代用高电压和低电压来表示电路状态是一种更高效的方式,反而三种状态很难快捷准确地表示和判断。
至于题主说的e进制。。。我觉得可能需要一种全新的,人类闻所未闻的方式来准确表示超越数。以及哪怕未来设计出来了应该也不会应用到PC中,因为超越数的幂除了0次幂之外其他整数幂次都将是超越数,人们日常使用中需要最多的还是自然数。不过在求解某些数学问题的专用计算机中中可能会挺有用的,在加密时应该也可以用到,题主可以去大胆探索下试试说不定会有发现哦୧( ⁼̴̶̤̀ω⁼̴̶̤́ )૭
另外我觉得 @白云龙 的解释其实比我的更清楚直观,我说的并不算清楚,实在惭愧,大家可以移步去看看https://www.zhihu.com/question/435375360/answer/1658770672
e进制最优是一个数学问题
用不用e进制是一个工程问题
计算机是干啥的?
是用来为人服务的
不是用来验证“完美造物”的
最简单的道理,每个程序中的每个值,它是有长度限制的,你弄个无理数进制,你想干吗?
人类生产生活实践中需要储存和计算的数据,几乎全部是有理数,绝大部分是整数和四到六位以内的小数。
无理数进制的实用性在哪里?
我一直觉得e进制这个东西,不说高不高效,数学上,实际上,一切非整数进制我觉得都完全不make sense。
整数进制的两个基本特点分别是,可以(利用无限小数)表示任何一个实数,且每个实数至多有两个表示,在做简单的约定以后,就有且只有一个表示。
如果你把e进制下的表示法看成∑a_i e^i,其中a_i是0/1/2,那么有很多数就没法用e进制表示,比如(2*e +0.01) / (e - 1)。
如果你把e进制里的a_i理解成0到e左闭右开区间的任意实数,那么,又会有很多数有太多的表示方法,比如e+1。
这无疑是要人在两坨翔里选一坨吃,我觉得这种进制毫无疑问是不会被人接受的
因为intel换酷睿系列商标了: