十进制一直是我心中过不去的一道坎。。

人类社会使用十进制已经几十万年的历史了,追根到底它源于远古智人的手指计数:当十只手指记不下时就会找其他记号标记一个“十”,接着从1开始再次用手指记录,以此循环。当十根可爱的手指头在眼前不停晃动,重复最末位的计数,人们也慢慢习惯上了这种进位方式,代代相传。

可不幸的是,现代计算机和二进制密不可分。无论是内存地址,硬盘数据,总线信号还是无线电磁波,都遵循着二进制排列组合的规则。因为种种原因,两级对立的普遍性和稳定性存在于这个物质世界的许多地方:晶体管的开与关(内存),电磁的正与负(机械硬盘),电信号的有与无(数据线),波频的高与低(无线网络)。

十进制与二进制相距甚远,且不是次方关系,这直接造成了许多问题,首当其冲的就是:符号匮乏的二进制想要表示一个文件需要排列组合很长很长一串,最重要的是十进制二进制之间的转换比较麻烦。

随着大脑进化,人类早就脱离了用手指来记10以下的数量,直接大脑缓存即可,事实上人脑可以轻松驾驭远大于10的进制计算。只是基因和社会化的缘故,导致我们仍然依赖于十进制。

这些窘境该如何解决呢?在这里有一个“不成熟”的方案蓝图:不改变计算机而去改变人类自己,让人类使用16进制!

正如之前所说,两极性的普遍实用让二进制和十进制“相爱相杀”,因为两极之间的稳定性和快速切换性无处不在,就像语言学中“正反大小高低强弱”这些普遍支持的衡量概念。计算机历史上曾经有人想挑战这一“盛世哲学”但均无功而返:第一代美国军用计算机利用高能耗的电子管cpu试图实现十进制计算来与人类同步;俄罗斯曾经提出的三进制创想最终化为泡沫。对计算机进制的争议最终还是收敛到无可比拟的二进制。

为什么人类使用16进制会更好呢?这里有两点原因,第一点原因是为了适应计算机。

先来说下计算器核心部件的工作逻辑:

当你从输入设备上依次写入十进制数的每一位之后(注意此时内存中是一个用二进制表示每一位的十进制数),cpu通过算法将它们转化成一个完整的二进制数(通常分配一个4字节的空间用于存储)。之后就开始了二进制数之间的数值运算,也就是经典的逻辑运算实现加减法,加减组成乘除,算出结果后再通过一个二转十进制的算法输出。

逻辑电路

在这个过程中,十与二进制之间的转换计算所消耗的时间要远大于单纯的两个数之间的四则运算,这就是存在的“不合理”之处。

为解决这个矛盾,聪明的程序猿们提出了模拟竖式计算的“十进制算法”,这种办法直接绕过了数制转换。在内存或缓存中,数是直接以十进制的形式存放的,最终通过每一位十进制数字之间的二进制计算,同时模仿十进制的进位规则,最终得到的结果自然也是十进制的。这种算法还突破了4Byte存储的限制,让计算更灵活。

But,仿竖式计算的致命缺陷仍然在存储上,因为至少要用一个字节来存储位数字,可惜一个字节可以表示256个不同数字,运用在十进制上面显然很浪费,即使只用4个比特也也会损失一半以上的资源浪费。可想而知,这种算法只适用于“连续计算但不连续输出”的情况,存储时还得转成二进制,再加上浮点数的负数的限制让这种算法难以大规模使用。

大整数竖式乘法的核心算法

说来说去,矛盾的核心还是停留在进制的转换问题上。这时请调用我们灵活的大脑,发挥想象,顺便回到主题“16进制”。众所周知2进制转16进制是相当简便与直接的:一个16进制数字与4位二进制数一一对应,即实现了空间充分利用又大大降低了转换的成本,直接加快了OSI参考模型中“应用层”的执行速度,简直是完美。如果人类从一开始就使用十六进制生活工作,到20世纪伊始又邂逅了可爱的图灵计算机,那么此时的我们将多么受益啊!

还有,人类最好使用16进制的第二点原因是:有助于人类自己。十进制对于我们的大脑的计算和记忆能力来说过于简单容易了,16进制更丰富的表示能力可以让人们的生活潜移默化地趋向多样化,渗透到我们的语言和文化的种种方面,激发大脑的智力,提升大脑的思考。虽然听起来很抽象,却是个不争的事实,只可惜人类进化史让我们没能长处8根指头,不然这个世界会是个全新的面貌哦。

所以请容许我提出一个目前看似无法实现的梦想,就是“全民改用16进制”。此愿望若是成真,将是多么大的一个进步啊。可见社会固化并不全是好处,正确的变革还是由少数人完成的哈,也许未来会有越来越多人意识到这一条可持续发展的新方向。

转载于:https://www.cnblogs.com/jinhengyu/p/10258003.html

【★】假如人类使用16进制相关推荐

  1. !假如人类使用 16 进制

    非常不好意思,因为因为这篇文章是用pdf写的,在转成html格式的途中遇到很多图片上的bug,遂选择了全部导出jpg再发布,如果有更好解决方案,请不吝留言哈.为了凑满150字,以下都是些没用的:表酱紫 ...

  2. 汉字转换成html,汉字与16进制、汉字与Html转义符的转换

    汉字与16进制.汉字与Html转义符的转换 package test; import java.io.UnsupportedEncodingException; import java.net.URL ...

  3. Ascii码 、16进制与 char

         对于一个非计算机专业出身的人,以前只知道计算机中所有的数据都是以二进制形式进行存储,计算,通信的.但是人类文明中,主要的信息展现以文本的形式展现的.如果使用内存中的0和1来表示文本一直都是一 ...

  4. c语言 bcd码 16进制字符串 原理,ASCII码、HEX、字符、BCD 等等 基础知识思考

    每每遇到这些问题就要想个半天,想不明白还不舒服,今天特别把所想整理下避免以后再次进入思想漩涡!!! 计算机存储和传输都是以字节为单位 1 bit     = 1  二进制数据 1 byte  = 8  ...

  5. 串口编程 - ascii字符与16进制的相互转换

    串口编程 - ascii字符与16进制的相互转换 如需转载请标明出处:http://blog.csdn.net/itas109 QQ技术交流群:129518033 文章目录 串口编程 - ascii字 ...

  6. RGB颜色与16进制色以及透明色

    转载请标明出处:http://blog.csdn.net/liang5630/article/details/43483331 ,本文出自:[刘宏亮的博客] RGB颜色与16进制色以及透明色是我们在开 ...

  7. 区块链100讲:16进制数据的编码/解码算法

    众所周知,计算机存储和处理的都是二进制数据.为了简洁,实际上使用最多的是二进制的一个变种--16进制.比如笔者的名字叫嘉文,中文拼音是jiawen(全小写),在计算机里存储的就是 6A69617765 ...

  8. 计算机中各种数制间的转化(10进制与2、8、16进制之间的快速转化)

    最近看数据结构的书,回顾下以前学的东西.无意间翻到了stack这章,我就在想,为什么要使用栈这种数据结构?它的底层不也就是数组或者链表来实现的吗?于是,希望能从书中找到答案(其实我之前也猜想,无非是和 ...

  9. 【图片】Python对RGB颜色与16进制颜色进行互转

    RGB颜色被称为"真彩色",是Photoshop中默认使用的颜色,也是最常用的一种颜色模式.RGB模式的图像由3个颜色通道组成,分别为红色通道(Red).绿色通道(Green)和蓝 ...

最新文章

  1. iOS中得block代码块的定义及使用
  2. c#程序设计语言杜松江版_当前最流行的10款编程语言,你会哪种?
  3. robomaster裁判系统服务器,2018裁判系统调试组网完全攻略
  4. C# DataSet转JSON
  5. web应用自动化测试的演进
  6. 戴尔t40服务器接显示器,Dell PowerEdge T40 机架式服务器
  7. 作为一名管理者,如何做好上传下达工作呢?
  8. 富士通推出区块链技术驱动的数据存储系统(GBCAX)
  9. <el-link>去掉下划线
  10. Quorum共识简析
  11. 我原以为我不会伤心......
  12. 最新版 Whatsapp 官网下载安装
  13. 培训班出来的程序员怎么就不行了?
  14. python 批量修改/替换数据
  15. EXCEL怎么批量在两字姓名中间加空格
  16. 百度搜索引擎中的特殊符号和搜索语句
  17. CentOS 7 安装Elixir
  18. 史上最强数据分析学习笔记(附思维导图),没有之一!!!
  19. 宝安区2021年高考成绩查询入口,宝安区2021年学位申请房屋锁定网上查询说明(附入口)...
  20. 加载Flutter Assets中2倍图的一些细节

热门文章

  1. (三)RocketMQ集群部署实践
  2. jquery获取data-*返回undefined小记
  3. SESSION存储于redis(CI3)
  4. 【语法解释】init
  5. Web UI 制作规范
  6. 奇绩创坛 2021年秋季创业营 反馈:再接再厉
  7. important meeting with friends
  8. tableau暂时不支持m1芯片!期待未来!
  9. Ubuntu 14.04 FTP服务器--vsftpd的安装和配置
  10. 深入理解Java的equals和hashCode方法