贡献者: addis
我们日常熟悉使用十进制。但我们可能由于对其习以为常而忘记它一般的规则。所以我们不妨总结一下。用阿拉伯数字表示十进制数时,每一位共有十个符号:$0,1,\dots, 9$。要特别注意其中并没有 “十” 这个符号,必须要用两位数 $10$ 才能表示出十。
许多国家的自然语言中存在比 $9$ 大的数字的单词,如英语的 eleven, twelve 可以用一个单词表示 $11$ 和 $12$,但是当我们讨论十进制的阿拉伯数字写法时,一位数符号中只有 $0,1,\dots, 9$ 而没有其他符号。
下面我们会看到这个规律对任何进制都是一样的:$N$ 进制中的一位数只需要包括 $0$ 在内的 $N$ 个不同的符号,可以表示 $0,1,\dots,N-1$。而需要进位成两位数才可以表示 $N$ 本身。
如果从 $0$ 开始,如何数数呢?从十进制中我们可以总结出来,当一位数的符号从第一个数到最后一个后,如果还需要下一个,就在左边一位使用下一个符号,并把当前位归零。例如 $9$ 可以看成 $09$,下一个数在第二位使用下一个符号 $10$。又例如 $199$ 的下一个数是 $200$,这是因为最右边两位同时达到了最后一个符号,所以要在第三位使用下一个符号并把前两位归零。注意我们假设可以在一个数字左边写上任意多位的 $0$ 而不影响它表示的值。
所以十进制的(右边)第二位的 $1$ 代表 $10$ 倍,而第三位数代表 $100$ 倍……例如十进制的 $43576$ 表示
那么相似地,对于任意的 $N$ 进制,当某一位从 $0$ 变到 $N-1$ 后,如果还需要下一个符号,就在下一位加 $1$。也就是下一位的一个数等于上一位的 $N$ 倍。
可以总结出,$m$ 位的 $N$ 进制数可以表示的最大的数是 $9\dots9_\text{N}$($m$ 个 $9$),也就是 $N^m-1$。所以 $m$ 位的 $N$ 进制数一共可以表示 $N^m$ 个不同的数(包括 $0$)。
根据式 1 可以总结出 $m$ 位 $N$ 进制数的一般表达式:
作为一个和十进制相近的例子,我们先来学八进制。八进制下,我们每位只能使用 $0,\dots,7$ 这 $8$ 个符号。当我们需要 $7$ 的下一个符号时,就进位到下一位,即 $10$。为了和十进制的 $10$ 区分,我们把它写成 $10_\text{8}$。所以 $10_\text{8} = 8$。
我们可以继续数七个数,到 $17_\text{8}$,那么下一个数又该进位并把第一个归零,即成为 $20_\text{8}$。再数七个到 $27_\text{8}$,然进位成 $30_\text{8}$。当你继续数到 $77_\text{8}$,那么下一个数需要向第二位进位,但第二位也已经满了,所以需要向第三位进位,成为 $100_\text{8}$。
所以如果把式 1 左边的数视为 $8$ 进制的 $48576_\text{8}$,它在十进制中表示多少呢?类比过来,就是
根据上文,二进制只有两个符号 $0$ 和 $1$。二进制是最小的进制,因为 “一进制” 将不能表示 $0$ 以外的任何数。
我们用二进制数数:$0_\text{2}$,$1_\text{2}$ 这时已经到最后一个符号了,于是进位得到 $10_\text{2}$,再数 $11_\text{2}$,这时发现两位数都是最后一个符号,向第三位进位得 $100_\text{2}$,$101_\text{2}$,$110_\text{2}$,$111_\text{2}$。向第四位进位:$1000_\text{2}$,$1001_\text{2}$,$1010_\text{2}$,$1011_\text{2}$,$1100_\text{2}$,$1101_\text{2}$,$1110_\text{2}$,$1111_\text{2}$……
二进制数如何转换位十进制呢?一个八位二进制数的例子:
十六进制需要 $16$ 个符号,所以我们需要在十进制的 $10$ 个符号基础上额外添加 $6$ 个,一般使用字母 a 到 f 分别表示 $10$ 到 $15$,也可以用大写。例如
十六进制在计算机领域经常被使用。这是因为一位十六进制数与 $4$ 位二进制数具有一一对应的关系。这是因为 $4$ 位二进制数可以表示的数有 $2^4 = 16$。
我们来思考 $N$ 进制的小数点表示什么。任何整数可以视为小数点在最右边且右边都是零,每当小数点向左移动一位,就代表原来的数的 $1/10$,向右移动一位就是乘以 $10$。
那么同理,$N$ 进制中,每把小数点向左移动一位,就代表原来的数乘以 $1/N$,向右移动一位就代表乘以 $N$。
我们可以把式 2 改写为支持小数的形式: