二进制转十进制 二进制怎么算
一个编程兴趣班的小朋友问我一道十进制数转化为二进制数的题:13.625转化为二进制应该如何表示。让我回忆起二十多年前学编程时就搞不懂二进制,不找“不必求甚解”的借口,我搜索了bilibili,知乎,甚至慕课网,但很失望,这么多年过去了,能找到的资源依然和以前一样,只讲怎样操作,不提为什么这样操作。让读者、学习的人知其然,不知其所以然。
也可能“大神”们认为,二进制与十进制数互相转换的方法告诉你后,你很容易就理解背后的原理了。在知乎上看到吐槽高校的教材编写质量的文章有很多,才知道实际上大部分人和我一样,都没有这样高的悟性。
文科学习中,读书时“不求甚解”是古人留给我们的学习经验,晋朝陶渊明在《五柳先生传》中说“好读书,不求甚解,每有会意,欣然忘食”。理工科的学习中,貌似应该摒弃此种读书的方法,应该把细节搞清楚,不留隐患。
找不到资源,或者不想用大量时间去找了,求人不如求己,索性自己琢磨,自己成为资源的提供方。
先简单科普下二进制,再说二进制与十进制数互相转换的方法,然后给出二进制与十进制数互相转换的原理。
二进制就是逢二进一,仅有两个数字0和1。有人说二进制源自1679年德国数学家莱布尼茨的思考,有人说源自中国的太极生两仪,两仪生四象,四项生八卦。但深刻、广泛的应用二进制,要到计算机的诞生,因为计算机只认识两个数字0和1,让电子元件保持两个稳定状态比如有电压、无电压,容易做到,可让电子元件保持10个稳定状态很难。所以,现在世界上的所有计算机,手机的内部运算使用的都是二进制数。
武断了,曾经有个很强大的国家叫苏联,制造出用三进制运算的计算机,据说苏联的数学家理论上证明过e进制运算是最高效的,三比二更接近e,实践也证明三进制计算机确实比二进制计算机更高效。各种原因,很遗憾,我们没有见过,用过三进制计算机。
十进制数和二进制数的前几个数对应表如下:
下面举具体例子说明十进制数和二进制数互相转化的方法
所以,最开始的问题,13.625化为二进制数的方法如下图:
下面讲转化的原理:
首先说明一下数位的含义。古罗马人用字母V表示5,字母 I 表示1,但 VI 并非表示51,大概那个年代还没有数位的概念,所以VI表示5+1=6,同理X表示10,但IX也不是110,IX=10-1=9。以下图的表盘为证
我们现在书写数字的习惯是按数位理解的,51中的5在十位上,表示50,1在个为上,表示1。51=50+1
再例如5834表示5千+8百+3十+4,把千,百表示数位的字换成科学计数,如下图
同理,二进制数1101的第一个1(最高位上的1)不是在千位(10^3)上,而是在2^3位上;第二个1,不是在百位上,是在“4”位上。
小数的数位翻译如下图
所以,二进制的整数或者小数转化为十进制数时,把每个数位上的0或1乘以对应的数位,再把积相加即可。
十进制的整数或者小数化为二进制数,看上面给的方法就很难,其原理用语言表达出来,想要严谨、简洁也很难。这里我就不试着表达了,用算式表达我的思考过程吧。
十进制整数化为二进制整数不用上面的待定系数法了,直接类比法得到,如下图
仿照得到5、8、3、4的方法,类比得:
把上面的两个推理写的形式再简洁一些
如果上面的没有看懂,不用沮丧,因为我上面说的理工科学习应该摒弃“不求甚解”的观点,逻辑上好像有道理,可在实践中是不成立的。任何人都不可能短时间掌握真理的所有细节。光是波还是粒子,科学家们争论了很多年;飞机都已经在天上飞了很多年,自行车我们基本都会骑行,但飞机和自行车的原理科学家们直到现在也不能给出完美解释。
看任何书,都可以不求甚解,对学习来说,最重要的是,每有会意,欣然忘食。
如果上面的没有看懂,不用沮丧,也可能是因为我写的水平太差,并非你的悟性不好。最重要的是,每有会意,欣然忘食。