阅读本文之前先思考一下标题,看看你自己的答案是什么?
数制
数制,又称作计数制、计数法,或计数系统(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 不能满足,当然不能称之为数制了。
“众智汇”
愿景
尽职尽才,允公允能 ——
本社群不定期举行线上分享,组织群友分享知识、经验、资源,以达到
让我们每个人的职业生涯得到最大程度的发展
的目的
。
欢迎扫面下列二维码关注“悦思悦读”公众微信号