准确地说,应该是:
在 N 进制中,最大的单个数字符号是 N-1。
当数值达到 N 时,就需要向高位进位,即满N进一。
比如,十进制:
N=10,最大的单个字符是 N-1=9。
当9再加1,达到N之后,向高位进一,变成10。
注意这里的“10”可不是十进制里的比9大的数字字符,而是代表十位为1,个位为0。
01
位值制
十位为1,个位为0,这是位值制,也叫位值记数法。
位值制是我们现在常用的、习惯的记数法。
核心规则是:
把数字写在不同的位置上,不同位置权值不同,那么数字代表的数值大小也是不一样的。
比如2486:
千位上是2,代表这里有两个千;
百位上是4,代表这里有四个百;
十位上是8,代表这里有八个十;
个位上是6,代表这里有六个一。
写成展开式就是2486=2×1000+4×100+8×10+6×1。
采用位值制表示数,我们只需要很少的数字就能表示很大的数。
而2486用罗马数字表示就是MMCDLXXXVI。
——很长对不对?罗马数字没有位值制,它们是累加制。
现在世界上基本都用阿拉伯数字。
阿拉伯数字其实源自印度,由阿拉伯商人传播到其他地方。
印度是有位值制的,而且基于十进制。
所以,今天大部分人都使用基于十进制的位值制系统。
习惯了十进制,谈其他进制是很陌生的。
以至于说到二进制、八进制,甚至五进制、十六进制,我们第一反应是它们满2,8,5,16进一。
然而,我们忽略了一个更重要的点:其实,其他进制的搭建,也基于位值制。
02
其他进制,也基于位值制
比如二进制。
100011,它是十进制的35。
左边第一个1,代表位值32,即2的5次方,这里有1个32;
第二个数字0,代表位值16,即2的4次方,这里有0个16;
第三个数字0,代表位值8,即2的3次方,这里有0个8;
第四个数字0,代表位值4,即2的2次方,这里有0个4;
第五个数字1,代表位值2,即2的1次方,这里有1个2;
第六个数字1,代表位值1,即2的0次方,这里有1个1。
只不过十进制的位值(权值)是个十百千万十万这些,它们分别是10的0次,1次,2次,3次,4次,5次方。
而二进制的位值是2的0-N次幂。
八进制,也基于位值制。
比如,十进制的156用八进制表示是234。
2,位值是64,也就是8的二次方,这里有2个64;
3,位值是8,也就是8的一次方,这里有三个8;
4,位值为1,也就是8的0次方,这里有4个1。
156=2×64+3×8+4×1
用八进制表示就是234,取系数,系数背后是位值。
其他进制也是,比如三进制,五进制,道理一样的。
核心都是位值制+系数,跟十进制一样。
03
进位
十进制里,满十进一:
有9个一,再来一个一,进位成一个十。
有9个十,再来一个十,进位成一个百。
够十了,我们要进一,来到更大的数位。
就像装糖果:
十个一个小袋子,小袋子满十个了装一个小箱子,小箱子满十个再装一个大箱子……
在八进制中:
一开始散装糖果,一个一个的,到了8个,就8个糖果装一个小袋子。
8个糖果的小袋子有8个,再来到64个糖果的小箱子。
够八了,进到更大的单位。
而在二进制运算中,数值小,变化快:
有了两个1,够2了,就要进一;
有了一个2,再来一个,还要进一,来到更大的单位4。
比如,10+10(二进制)=100。
用数学表达就是:
将权值2这里写成0,再将高位4这里写成1。
于是就是100(一零零)。
介绍了这么多进制,你有没有发现:
二进制,八进制是有2和8的,只不过2和8不是系数,而是权值。
十进制的十,也是权值,隐藏在后台。
而十进制里有10,这里的10不是系数,是一个十。
这里没有10这个数字(系数)——所以,你理解了吗?