人类早期为了数猎物、果实等物体的需要,逐渐产生了数。人的手指就是最早的计数工具。随着生产力的不断发展,人们在实践中接触的数目越来越多,也越来越大,因而需要给所有自然数命名。但是自然数有无限多个,如果对于每一个自然数都给一个独立的名称,不仅不方便,而且也不可能,因而产生了用不太多的数字符号来表示任意自然数的要求,于是,在产生记数符号的过程中,逐渐形成了不同的进位制度。
十进制的起源
世界上的多数民族都不约而同地采用了“满十进一”的十进制。十进制,以及由它衍生出来的百进制、千进制等共同规范了我们的算术体系。时至今日,它已是我们生活中最不可缺少的一部分。我国使用十进制的历史,可以一直追溯到商代。
商代中期已产生一套十进制数字和记数法,从已发现的商代陶文和甲骨文中,我们可以看到当时已能够用一、二、三、四、五、六、七、八、九、十、百、千、万等十三个数字,记十万以内的自然数。这些记数文字的形状和写法在后世虽有所变化,但这种记数方法却一直被沿袭,并日趋完善。
周代金文的纪数法继承了商代的十进制, 又有明显的进步,十进数量级符号有十、百、千、万、亿,如西周金文“伐鬼方……俘万三千八十一人”,“武王遂征四方,俘人三亿万有二百三十”,出现了位值记数,例如 “俘牛三百五十五“,其中三百五十五写成“三全XX”,前面的“全”是金文的“百”,后面两个XX是五十五,省去了“十”,出现了位置概念,但尚未形成完整的位值制。春秋战国时期出现了严格的十进位制筹算记数,也发明了用于十进位制乘法、除法的九九表。
根据公元4世纪的《孙子算经》的记载,任何数都是由九个纵排数字和九个横排数字按个、百、万等用纵筹,十、千等用横筹来表示,零用空位表示。这是完整的十进位值制。不仅如此,借助于位值制,用算筹还可以表示分数、小数、负数、二次和高次方程、线性方程组、多元高次方程组等。算筹和位值制奠定了中国数学长于计算的基础。
玛雅数字
除了中国之外,在其他地方也出现了类似的十进制记数法,比如古印度,古希腊等等。亚里士多德曾经说过,人类普遍使用十进制,只不过是因为人生来就有十根手指。与此相对的,已经退出历史舞台的玛雅数学使用的是二十进制,考古学家猜测这是因为他们在数数的时候除了手指,还加上了脚趾头的缘故。英语单词Digit(数字)可以指手指或脚趾,单词five(五)和单词fist(拳头)有相同的词根,出现这种情况也并不是巧合。
在纯数学的层面上说,十进制因子太少,只有2,5两个,而十二进制,数码只比十进制多两个,因子却有2,3,4,6四个。从这个层面来看十进制并不是最优秀的进制,但是因为在生理上具有普适的优点,方便理解,也最容易被不同地方的人接受,所以比起十二进制,二十进制,六十进制这些方法,十进位制的记数法堪称古代世界最流行,也是最先进、最科学的记数法,对世界科学和文化的发展有着不可估量的作用。
不同的进位制记数法
这个世界上绝不是仅有十进制。在数学发展史上,不同时代,不同地域也使用不同的进制法。比如电脑使用的二进制,星期是七进制,月份是十二进制,时间是六十进制等等。
二进制的写法只有两种数码:0和1。它是逢二进一,借一当二。与十进制相比,二进制最简单,只需要两个基本数值,但是使用起来却很麻烦。试想原始人打猎,获得三个猎物就得进一位,获得五个就又得进一位,进位频繁会造成位数太多,计算容易发生错误。
八进制是逢八进一,也就是可以用0,1,2,3,4,5,6,7表示个位,当到8的时候变成了两位数10,我们一般在八进制数10前面加上0,八进制数的10就变成了010了,010表示的是8。八进制是有其优越性的,因为它是二的倍数,又是二的倍数的倍数,似乎优于十进制;它之所以没能流行,还是因为人类的习惯。
十六进制是逢十六进一,也就是可以用0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F表示个位,其中A,B,C,D,E,F分别表示十进制中的10,11,12,13,14,15,当数到16的时候就要进位了,为了和十进制区别,用0x10表示,0x10表示的不是10,而是16。十六进制在中国近代还在使用,只限于重量单位,十六两为一斤。可能的来源是这样:把一斤重的东西平分一次就是二分之一斤,再继续平分就是四分之一斤,再继续平分就是八分之一斤,继续分就是十六分之一斤,也就是一两了。
各种进制与十进制的转换
十进制有以下两个特点:使用的数字有 0、1、2、3、4、5、6、7、8、9 共 10 种。数位有一定的意义,从右往左分别表示个位、十位、百位、千位……
接下来我们以2503这个数为例。把2503拆分,是2个1000、5个100、0个10和3个3累加的结果。因此,我们可以把2503写成以下形式:
千位、百位、十位、个位,分别可以称作这个数字的(10的3次方)的位、(10的2次方)的位、(10的1次方)的位、(10的0次方)的位。十进制记数法的数位全都是(10的n次方)的形式。这个10便可以被称为十进制记数法的基数或底。
在十进制记数法的基础上类推,很快就可以掌握二进制的规则。二进制使用的数字只有0、1两种。从右往左分别表示1位、2位、4位、8位……
这里出现的8、4、2、1,分别表示
所以在二进制中,基数为2,各个数位以2的n次方的形式表现。因此,我们可以把二进制下的1100写成以下形式:
二进制转十进制
如此计算,就能将二进制记数法的1100,转换为十进制记数法规则下的数字:
十进制转二进制
那么,十进制要怎么转化为二进制呢?其实很简单:除就行了!
我们将十进制下的2503转换为二进制记数法,如下图所示,我们需要将2503反复地除以2,并观察余数为“1”还是“0”。
随后再将每步所得的余数的列(1和0的列)逆向排列,由此就可以得到这个数二进制的表示。结果就是100111000111。
在十进制中2503只有4位,而在二进制中要表达同样的数则是12位数字。
有了十进制和二进制做铺垫,我们可以按图索骥,得出八进制记数法的特征如下:使用的数字有0、1、2、3、4、5、6、7共8种。
从右往左分别为(8的0次方)的位、(8的1次方)的位、(8的2次方)的位、(8的3次方)的位……(基数是8)
八进制转十进制
拿八进制数226举例(由右向左依次乘以8的n次幂,n从零开始),转成十进制数就是:
十进制到八进制
十进制数转成八进制数只需要除8取余数 最后把余数倒过来。
比如十进制数字2456 转化成八进制数字:
2456÷8=307,余0;
307÷8=38,余3;
38÷8=4,余6;
4÷8=0,余4。
将所有余数倒序相连,得到结果:4630。
因此十进制的2456转换为八进制结果为4630。
十六进制记数法的特征如下:
使用的数字有0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F共16种。
从右往左分别为(16的0次方)的位、(16的1次方)的位、(16的2次方)的位、(16的3次方)的位……(基数是16)
十六进制转十进制
拿十六进制数96来举例(由右向左依次乘以16的n次幂,n从零开始)
9×161+6×160=150
所以十六进制数96转化成十进制数就是150
十进制转十六进制
同样十进制数转成十六进制数就要除16再倒着取余数。
比如说:十进制数1610转换成十六进制
1610÷16=100……10(A);
100÷16= 6……4;
6 ÷16= 0……6;
因此十进制1610=十六进制64A
由上面的例子可以总结出N进制记数法的特征如下:
使用的数字有0,1,2,3,…,N-1,共N种。
从右往左分别为(N的0次方)的位、(N的1次方)的位、(N的2次方)的位、(N的3次方)的位……(基数是N)
转换规则就是
n进制转换为十进制:
n进制上的每一个数字乘以位权再把它们全部加起来。(位权是指数制中每一固定位置对应的单位值)
十进制转换为 n进制:
整数部分不停地除以n,直到商为0,记录下每次的余数,从最后一个余数开始逆向排列。
编辑:张子杰
责任编辑:李伶
声明:转载此文是出于传递更多信息之目的。若有来源标注错误或侵犯了您的合法权益,请作者持权属证明与本网联系,我们将及时更正、删除,谢谢。