阅读本文之前先思考一下标题,看看你自己的答案是什么?
数制,又称作计数制、计数法,或计数系统(numeral system),是一个表示数的书写系统。
一个理想的数制应该能够:
有效地描述一个数的集合;
给每一个数一个唯一的表示;
反应这些数的代数和算数结构。
十进制
我们现在日常生活中最常用的数制是采用阿拉伯数字为计数符号的十进制系统。
这个数制是如何来表示“数”这个概念的呢?我们先来看一个最简单的例子:
1347
上面这四个顺序排列的阿拉伯数字符号代表了一个正整数:一千三百四十七。
7 表示 七没有问题;4 为什么表示 四十而不是四呢?
原因很简单:在我们最常见的数制中,除了有十个符号来表示零到九这十个不同的数量值之外,还有一个叫做“数位”的东西,决定了每一个符号的权重!
比如上面“1347”中的 4,它“站在”十位这个数位上面,它的权重是十,因此它代表的四个十,也就是四十。同理,站在百位的 3 的权重是百,它表示三百;站在千位的 1 权重为千,它代表一千。
这些都太简单了是不是,大家肯定早就知道了。
不过这里还有一个隐藏的事实,不知道大家注意了没有——当我们在使用这样的一个数制来表示数的时候,我们在无形中构建了一个表示空间,这个空间的长度就等于我们要表示的数值的位数。
“1347”的空间就是 4 位,“2583960”的空间是 7 位,Google (10 的 100 次方)的空间是 101 位。
这又有什么稀奇的,谁还不会数吗?这当然没什么稀奇的,但就是这样一个如此简单的“表示空间”,表现了十进制数制的算数结构!
二进制
大家都知道计算机的理论基础是二进制体系。
二进制其实和我们常用的十进制非常类似,就是把十个数字符号改成了两个:仅有 0 和 1——一个表示无,一个表示有。因为只有一个符号表示有,因此它只能表示有的最小单位:一。
其他数制
除了十进制和二进制,还有其他数制吗?当然有啦——
八进制和十六进制
计算机领域也常用八进制和十六进制。
八进制的表达非常简单,取0-7作为数字符号,逢八进位。十六进制则在0-9的基础上增加了A,B,C,D,E,F这六个英文字母,作为数字符号,然后逢十六进位。
更多数制
XX进制多得是。别说应用领域,就是文学作品中,都不乏各种数制的例子。
比如,英国作家路易斯·卡罗创作的儿童文学作品《爱丽丝梦游奇境》(Alice's Adventures in Wonderland,缩写为 Alice in Wonderland)。
故事发生在一个叫做奇境的地方:
书中的主人公爱丽丝 —— 一个 11 岁的小女孩,在那里遇到了很多奇怪的事情。
在第二章 “眼泪湖” 中,爱丽丝试图计算一些乘法题,但是得出了奇怪的结果——
“让我看看,4 x 5 = 12,4 x 6 = 13, 4 x 7 等于 -- 哦天哪,我永远也乘不到 20,这也太奇怪了!”
实际上这些结果是基于不同数制的正确计算结果:
4 x 5 = 12 是十八进制
4 x 6 = 13 是二十一进制
而 4 x 7 的结果可以是二十四进制的 14。
有个问题,看看大家是不是都能回答:一进制存在吗? 如果存在,请给出表达形式。如果不存在,那么请说明原因。
什么是一进制?可以理解为是把二进制的数字符号从两个改为一个,其他都照搬——这样的数制存在吗?
曾经有一个人自诩创造了一进制,他说:“很简单啊,我就只保留一个符号‘1’,然后把一个二进制数改成一进制,原来是‘1’的地方还是‘1’,原来是‘0’的地方直接空着,这不就是一进制吗?”
还举了个例子,比如把二进制数:“1000111010”改成“1 111 1 ”——这不就得了?
可惜的是,他这样改并没有把二进制改成一进制,只不过把二进制原本的两个数字符号 0 和 1 改成了空格和 1 而已。
数字符号还是两个,其他的一切都没变,二进制还是二进制。
一进制当然是不存在的!
为什么?
一进制不存在原因,可以从不同角度来解释:
【角度 1】
有和无是截然不同的两种状态,必须区分开来,无法用同一个符号表示。因此不可能存在仅有唯一符号的计数体系。
我们不妨反过来想:如果一进制存在的话,那么这种数制只有一个符号可以用来表示各个数位上的取值。这种情况下,则根本连有和无都区分不了!
“一进制”的这个唯一的符号(无论这个符号具体是什么,是 0/1/2/3/……还是 a/b/c/d/……亦或甲/乙/丙/丁/……都没有任何影响)在与不在,在第几位,整个数字一共包含几位,都没有任何分别,所有的写法表示的信息都仅有一个——也就是它什么都没有表示!
这样的数制又有什么存在的意义呢?
【角度 2】
我们且不考虑有几个数字符号,而从另一个角度来想:
所谓 n 进制最直观的特点就是满 n 进位。
假设 1 进制真存在(也就是 n == 1),那么我们想表达没有的时候,可以写成:0,想表达一个的时候,能够写成 1 吗?不能,因为已经满了 1,所以第一位就要进位了。
那么能写成 10 吗?也不能,因为第二位一旦被进了 1,就也已经满了 1,也需要进位。而第三、四、五、六……之后的所有位都是如此。
结果就变成了:当我们想要表达一个的时候,在 1 进制中就变成了从右往左写 0,一直不停地写无数个 0,还是表达不了 1。
1 都表达不了,更别提更大的数值了。
【角度 3】
或者,可以再狠一点:
我就非要这个“一进制”不可啦!我就只保留一个字符:1。用 1 表示一个,用 11 表示两个,用 111 表示三个……
我就拿这个“1”当成幼儿园小朋友数数的小棍儿(下图这样),是多少个数,我就画多少个“1”!这样总可以有“一进制”了吧?这里还是有问题的:
这种计数方法无法表示零(也就是没有)。
如果你说如果什么都不写就表示没有了,那等于又是那空格或者“虚无”来表示零了,这样的话整个体系中又出现了两个符号(无论第二个是否存在,是否具备被书写出来或者表达出来的形态,只要和第一个符号有区别,就是第二个符号),也就不是“一”进制了。
计数法成立的必要条件之一是能够它所表达的数的“代数和算数结构”。这种用“1”代替小木棍的表示方法是不具备结构的!
如果一个‘1’无论写在哪里都是只表示“一个”,那么也就没有所谓数位的存在了。那么这些“1”到底是整齐地排成一排还是杂乱地堆成一堆,也就毫无区别了。
换句话说,这样的“一进制”无法撑起一个表示空间!既如此,哪儿又存在什么结构呢?这样计数,连计数系统的最基本条件都有 2/3 不能满足,当然不能称之为数制了。
“众智汇”愿景
尽职尽才,允公允能 —— 本社群不定期举行线上分享,组织群友分享知识、经验、资源,以达到让我们每个人的职业生涯得到最大程度的发展的目的。
欢迎扫面下列二维码关注“悦思悦读”公众微信号