程序员数学——0的故事
在计算机世界中,有很多的操作符,还有很多的数据。实际上,从计算机硬件的角度去考虑,一切都可以看做是晶体管的通电与断电。这传递出了两个消息,我们可以把晶体管的开关与数字相互结合,组成一个系统。我们称它为——二进制。二进制与我们生活的十进制有很多不同(生活中之所以会用十进制,是因为人有是根手指,方便计数)。
第一部分:
任何一个计数系统都可以从以下几个方面去考虑:1.使用的数字。2.数位标准。
举例:
十进制:
1.使用的数字0.1.2.3.4.5.6.7.8.9,一共10种。
2.数位标准逢10进1,因为我们没办法用这10个数字去记录时,只能进行升位。同时,我们引进了位权这一概念。
在现实生活中我们想要描述10,这时发现10个数字不够实用,那么与其继续创造11进制,12进制,不如在原有的计数系统内部增添新的内容,进行改造。此时重复使用就成了首选,但是重复使用时为了表达不同的含义,需要用到位权。回到之前的问题,想要表达10,那么久改写成10,此时重复使用了1这个数字,但此时1以及后面的0所构成的数字所表达的内容与单个的1不同,10中的0用来占位,从而表达出了超越计数系统内部所能直接表述的数字。
那么同理,二进制计数系统也存在相似之处
二进制:
1.使用的数字0.1,一共两种,
2.因为只能表示没有(0),和拥有一个(1),那么当想要表示2个这个意义时,就必须升位,理由是以现在的级数系统资源没办法单独表示,只能通过升位来重复利用这两个数字,从而表示出更大的数。
第二部分:
在现实生活中,我们不常用到0这个数字。0,它表示没有,也可以表示占位(到遇到大数字的时候,需要给每个位不同的权重)。
例子:假设现在必须有规律的服用一种胶囊,每四天停用一次(三天服用,一天停用),如此循环。
在遇到这种情况的时候,我们可以每一个盒子,用来装药物。每4粒药物中,第4颗都是糖果,这样就不需要每天记忆,只需要按照顺序吃盒子里的药物就好了。
这是0所起到的占位作用(如果我们把药物看做是1的话,那么没有药效的糖果就是0)。
第三部分:
不同的计数系统之间需要进行沟通,那么我们如何构建桥梁,就成了一个问题。
十进制转换成其他进制:
不同的计数系统,对待同一个事物数量具有不同的表示。它们的基本属性中的构成属性不相同(表示事物所使用的数字不同),但是当现有数字不够时,都采用了进位这一手段。这是所有进制间的相同点,也可以通过这个相似之处来进行相互的沟通。
那么我们就需要利用位权,将一个数字不断地去除以这个数的位权直至位权无法继续表示(说明这已经是最高位了,同时这里的这个数字经历了之前所有的除法运算,将成为转换后的数位的最高位)。这时不同计数系统的转换就已经完成。
其他进制转化成十进制:
其他进制的数乘以位权即可。
参考文献:
1.程序员的数学 【日】结城浩