位值记数法是一种书写数的方法,其中每个数码所表示的量既取决于数码本身,也取决于它所在的位置。在通常的固定底数系统中,各数位依次对应底数的各次幂。我们熟悉的印度-阿拉伯数字系统以十为底:在 555 中,三个相同的符号分别表示五个百、五个十和五个一。计算机使用的二进制及其他记数系统也以位值记数法为基础。(openstax.org)
数学结构
通常的位值系统选取一个整数底数 (b\geq2),也称为基数,并使用取值为 (0,1,\ldots,b-1) 的数码。一个有限位数的数的表示,其含义为
[ (d_n d_{n-1}\cdots d_0.d_{-1}\cdots d_{-m})b =\sum{k=-m}^{n}d_kb^k. ]
小数点将个位与小数部分的数位分隔开来。它左侧各数位的权重依次为 (1,b,b^2,\ldots),右侧各数位的权重依次为 (b^{-1},b^{-2},\ldots)。这些权重通过乘方确定,其中小数部分使用负指数。(mathworld.wolfram.com)
例如,
[ (304.25)_{10} =3\times10^2+0\times10+4 +2\times10^{-1}+5\times10^{-2}. ]
在二进制中,同一原理给出
[ (101.01)_2=4+1+\frac14=5.25. ]
表示底数的下标指明这些符号应如何解读,并不改变它们所表示的量。因此,数的书写表示与它所指代的数本身是不同的。(openstax.org)
数码、零与非位值系统
零用于保留没有数值贡献的数位。在 304 中,它表示十位没有贡献;去掉这个零就会得到另一个数 34。前导零通常不改变数值,但可以用于满足格式要求。因此,0034 和 34 表示同一个整数。(openstax.org)
数码的形状与位值原理是两回事。一个系统可以用单个字符或一组符号来表示每个数码的值。例如,巴比伦记数法在同一数位内组合表示一和十的符号,同时让各数位依次对应六十的各次幂。(mathshistory.st-andrews.ac.uk)
位值记数法与罗马数字等系统不同。罗马数字的符号具有相对固定的值,按照加法和减法规则组合。符号的顺序固然重要,但其所在位置并不对应某个底数的连续幂次。仅仅让符号顺序影响数值,并不足以使一种记数法成为位值记数法。(openstax.org)
历史发展
美索不达米亚的巴比伦书吏发展出一种六十进制位值系统,即以六十为底的系统。每个数位可表示的值最高为五十九。早期记数法缺乏统一使用的空位占位符,一个数的表示究竟对应多大的数值,往往取决于上下文。后来的书吏引入了占位符,但它的作用并不在所有方面都与现代作为数的零相同。(mathshistory.st-andrews.ac.uk)
玛雅人发展出另一种位值记数传统,采用二十进制,以点和横线构成数码,并使用零的符号。他们的历法记数法对数位权重作了调整,因此不能把所有玛雅数字都直接解读为二十的各次幂组成的序列。(openstax.org)
十进制位值记数法在印度发展起来,其发展历程与数码形状本身的演变并不相同。更早的婆罗米数字还不是完整的十进制位值系统。后来,包含零的印度位值记数法通过阿拉伯语学术著述传播,并传入欧洲。花拉子米推动了印度计算方法的传播,而斐波那契则在其 1202 年的《算盘书》(Liber abaci)中介绍了这些方法。(mathshistory.st-andrews.ac.uk)
算术与进制转换
位值为笔算算术提供了结构。加法要将权重相同的数位对齐。当某一列的和达到底数时,就把这一位的若干单位换成下一位的一个单位:在二进制中,(1+1=10_2)。减法通过借位进行相反的换算。乘法则将各数码的乘积与相应的移位结合起来。(openstax.org)
将非负整数转换为另一进制的一种算法,是反复用目标底数作除法。所得余数依次给出从右到左的各位数码。反过来,计算一个数的表示中各数位的加权和,就能求出其数值。例如,将十三反复除以二,依次得到余数 (1,0,1,1),逆序读取即为 (1101_2)。(openstax.org)
小数展开与计算机运算
位值记数法也可以表示分数和实数。无限小数展开的含义由其有限截断值的极限确定。在通常的整数底数系统中,有理数的小数展开要么有限,要么从某一位起循环;无理数的小数展开则既不终止,也不会从某一位起周期性重复。某个分数能否表示为有限小数,取决于所用的底数。(maths.ucd.ie)
二进制记数法使用两种数码值,对应一个比特的两种可能取值。十六进制记数法使用十六种数码值,通常写作 0–9 和 A–F,可以紧凑地表示二进制数值。十进制的 0.1 在二进制中具有无限小数展开;因此,有限精度的二进制浮点运算通常存储的是近似值,而不是这个精确值。这是所选表示方式的局限,并不意味着数本身发生了变化。(openstax.org)
更广义的位值原理还允许采用混合进制系统、负底数和非整数底数。这些推广改变了数位权重或允许使用的表示形式,不一定具有通常的正整数底数记数法的全部性质。(mathworld.wolfram.com)