阅读本文之前先思考一下标题,看看你自己的答案是什么?

数制

数制,又称作计数制、计数法,或计数系统(numeral system),是一个表示数的书写系统。

一个理想的数制应该能够:

  1. 有效地描述一个数的集合;

  2. 给每一个数一个唯一的表示;

  3. 反应这些数的代数和算数结构。

十进制和二进制

十进制

我们现在日常生活中最常用的数制是采用阿拉伯数字为计数符号的十进制系统

这个数制是如何来表示“数”这个概念的呢?我们先来看一个最简单的例子:

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. 这种计数方法无法表示零(也就是没有)。

    如果你说如果什么都不写就表示没有了,那等于又是那空格或者“虚无”来表示零了,这样的话整个体系中又出现了两个符号(无论第二个是否存在,是否具备被书写出来或者表达出来的形态,只要和第一个符号有区别,就是第二个符号),也就不是“一”进制了。

  2. 计数法成立的必要条件之一是能够它所表达的数的“代数和算数结构”。这种用“1”代替小木棍的表示方法是不具备结构的!

    如果一个‘1’无论写在哪里都是只表示“一个”,那么也就没有所谓数位的存在了。那么这些“1”到底是整齐地排成一排还是杂乱地堆成一堆,也就毫无区别了。

    换句话说,这样的“一进制”无法撑起一个表示空间!既如此,哪儿又存在什么结构呢?这样计数,连计数系统的最基本条件都有 2/3 不能满足,当然不能称之为数制了。

“众智汇”愿景

尽职尽才,允公允能 —— 本社群不定期举行线上分享,组织群友分享知识、经验、资源,以达到让我们每个人的职业生涯得到最大程度的发展的目的

欢迎扫面下列二维码关注“悦思悦读”公众微信号

一进制存在吗?为什么?相关推荐

  1. java 16进制与图片互转

    十六进制转成图片 /*** 十六进制转成图片* @author Administrator**/public static void saveToImgFile(String src,String o ...

  2. LeetCode简单题之K 进制表示下的各位数字总和

    题目 给你一个整数 n(10 进制)和一个基数 k ,请你将 n 从 10 进制表示转换为 k 进制表示,计算并返回转换后各位数字的 总和 . 转换后,各位数字应当视作是 10 进制数字,且它们的总和 ...

  3. LeetCode简单题之七进制数

    题目 给定一个整数 num,将其转化为 7 进制,并以字符串形式输出. 示例 1: 输入: num = 100 输出: "202" 示例 2: 输入: num = -7 输出: & ...

  4. Java IDEA Debug进制二维数组

    1.Debug模式 1.1 什么是Debug模式 是供程序员使用的程序调试工具,它可以用于查看程序的执行流程,也可以用于追踪程序执行过程来调试程序. 1.2 Debug介绍与操作流程 如何加断点 选择 ...

  5. python 16进制转10进制, 8进制转10进制, 2进制转10进制的方法

    python 16进制转10 进制, 8进制转10进制, 2进制转10进制 可以使用系统自带的 int 方法 具体如下: value = "0x1388" result = int ...

  6. Java中byte与16进制字符串的互相转换

    https://www.cnblogs.com/qinwangchen/p/5418028.html * Convert byte[] to hex string.这里我们可以将byte转换成int, ...

  7. 【Luogu】P1013进制位(搜索)

    题目链接在这里 这题和虫食算比较类似.做完这道题可以去做虫食算.都是搜索一类的题. 这样 我们分析题目可以发现进制只可能是字母的个数,也就是n-1.为什么? 因为题目要求完整的加法表才算数.如果进制低 ...

  8. -变量,进制,数据类型,标识符

    ###02.01_Java语言基础(常量的概述和使用)(掌握) * A:什么是常量 * 在程序执行的过程中其值不可以发生改变 * B:Java中常量的分类 * 字面值常量 * 自定义常量(面向对象部分 ...

  9. python中不同进制的整数之间可以直接运算_Python 进制转换、位运算

    一.进制转换 编程用十进制,十进制转换为二进制.八进制.十六进制 In [135]: bin(23) Out[135]: '0b10111' In [136]: oct(23) Out[136]: ' ...

  10. python测试脚本 进制转换_使用Python进行新浪微博的mid和url互相转换实例(10进制和62进制互算)...

    不过,status中包含了一个mid字段,通过mid,我们实际上是可以通过计算得到url的. 在开始计算之前有必要说明一下,什么是base62编码.它实际上就是十进制和62位进制的互换.对于62进制, ...

最新文章

  1. 没有什么不可能(1)
  2. iOS 富文本编辑工厂, 让书写更简便.
  3. macOS 10.13 安装Virtualbox失败
  4. leetcode169. 多数元素
  5. 怎么查看linux网关,如何查看linux服务器网关
  6. 《大数据》2015年第3期“网络大数据专题”——基于特征学习的文本大数据内容理解及其发展趋势...
  7. 单目视觉里程计 mono vo
  8. arcgis导出shp文件_RegionManager GIS导出shp文件编码说明
  9. send和sendmsg性能测试
  10. 解决了跨域POST的问题
  11. unity Vuforia物体移动的方向用AR箭头表示出来
  12. 基于GMSSL的常用算法特点总结以及源代码分享
  13. 贝壳基于 Flink 的实时计算演进之路
  14. 手机平板如何查看IDEA中运行的Tomcat的web项目
  15. Style笔记(css, stylus,less)
  16. 超高分辨率大屏拼接工作站硬件选型
  17. Appium-python-Android
  18. 【论文笔记】Neural Relation Extraction with Multi-lingual Attention
  19. 2019年,大前端技术趋势程度解读
  20. QMUI-Android的一些尝试(圆形进度条、Loading、圆形图片、圆形按钮、椭圆图片)

热门文章

  1. HYSBZ - 2818 Gcd —— 莫比乌斯反演
  2. 用python画小猪佩奇代码_用python画个小猪佩奇(turtle示例源码)
  3. Java 12位uuid_java如何生成12位永远不重复的数字
  4. c语言打印一个字母圣诞树,C语言打印圣诞树
  5. JAVA编写Word
  6. python 正态分布概率_计算正态分布中的概率,给定平均值,std在Python中
  7. css规则定义的分类,.css规则定义
  8. 多看系统下载_看了辣么多的圣诞蛋糕,出事儿了吧?学吧——来自KA·MM店内的马卡拉劈柴蛋糕(已打包·可下载)...
  9. java的round函数加点差_【JAVA】Math.Round()函数常见问题“四舍5入”
  10. TMB:肿瘤突变负荷简介