数字系统学习分享~
这里的数字系统,并非是数字电路之类的,而是指一种符号系统。
数字系统(或数码系统)定义了如何用独特的符号来表示一个数字。在不同的系统中,一个数字有不同的表示方法。例如,这两个数字(2A)16和(52)8都是指同样的数量(42)10。也就是说,一个数字本身是量词,也是客观存在的,而我们只是用12、44、880等符号来代表了这些量词,这些符号都是十进制数字系统中的数字符号,也许我们已经觉得很理所当然了,但其实要清楚,其实“12”、“44”等这些十进制数字,也不过是一个符号,用以代表同等的量。至于为什么我们的老祖宗选用了十进制,而不是二进制、八进制等,也许是因为人类有10根手指的身体构造吧,,想想吧,加入人类进化的时候变成8只手指,那现在很大可能,我们使用的就是八进制了。
上图可以简单标示,真是中的数量只是一个量词,比如现在有10根小木棍,如果用十进制数字来表示,就是10这个符号,如果用二进制数字来表示,就是1010这个符号,如果用八进制数字来表示,就是12这个符号。自然界中的量词是客观存在的,不过是以1作为标准建立起来的各种量的概念,如上图,1个小木棍作为一个基准,就会有3个小木棍、10个小木棍、0.1个小木棍等量。
其实对于进制的理解,就更简单了,进制的计数方法,是一种典型的位置化数字系统。在位置化数字系统中,数字中符号所占据的位置决定了其表示的值。在该系统中,数字这样表示:
+-(Sk-1···S2S1S0.S-1S-2···Sk-1)b
其代表的数值是:
n = +-(Sk-1*bk-1 + ··· +S1*b1 + S0*b0 + S-1*b-1 + S-2*b-2 + ··· + S-l*b-l)
其中,S是一套符号集;b是底(或基数),它等于S符号集中的符号总数,比如十进制中,一种有10个字符,分别是0、1、2···9,那么S的取值范围就是在0~9之间,而b代表了十进制中符号的总数量,也就是10,类似,二进制、八进制、十六进制都是一样。
有了上面的简述,其实很多事情就和清晰了,只是我们由于自认识这个世界,就是用10进制来计量的,因为很多时候已经将10进制和计数基本上混为一谈了,这里面既有好处和优势,也自然会造成一些概念上的混淆模糊,和对某些事物的认知。
进制的理解可以如下图:
由上图可见,所谓的位置化数字系统中的各种进制计数方式,可以想象在每个位置上有多个小箱子,同一个位置上的所有小木箱容量都是相同的,但是不同位置上的小木箱容量不同。最右边的位置上每个箱子分别可以放1个自然界中的量;位置从右至左,当右边的木箱中放满了数量的时候,就将其所有的小木箱中的量全部放在其左边一位的其中一个小木箱中,也就是说左边一位的每个小木箱比右边一位的小木箱的容量要大,而且正好是可以包含右边一位所有小木箱的容量。
那这里,二进制,就很清晰,就是最右边一位可以放两个自然界中的量,分别是0和1,注意,0也同样是一个量,也是需要占据一个木箱的,当需要代表2这个量时,显然最右边第一位的木箱不够用了,那么需要向左进一位,也就是说用10代表;八进制同样如此,只要清楚的记住,其每个位置上只能有8个小木箱,当放满了的时候,需要向左边进一位,即把右边一位中的所有量放在左边一位中的一个木箱中,毕竟左边一位中的每个木箱都要比右边一位中的每个木箱的容量要大,可以放更多的量。
例如在各个进制之间的转换。这里我们假设,一种无进制的计数方式,也就是未引入位置化数字系统或者非位置化数字系统的计数方式,是一种纯天然,也许是我们的老祖宗原始人使用的计数方式。
在二进制转化为十进制的时候,正常的或者说一般启发式的转换方式如下:
二进制数字——>无进制数字——>十进制数字
但是真实计算时,通常只是,如二进制数字1010,只是1*23+1*21 =10,就自然而然的转化为了十进制数字10,看似并未经过“无进制数字”这个阶段;其实这主要是因为,如上文中说到的,我们人类已经自然而然的把十进制数字和客观计数融为一体了,在我们将二进制数字转化为自然界中的量时,又很自然的用十进制数字来表示这个量,那么从输出过程来看,就显得是,我们直接从二进制数字过渡到十进制数字了。