八进制
八进制 | |
---|---|
术语名称 | 八进制 |
英语名称 | octal numeral system |
别名 | base-8 numeral system |
八进制的 | |
---|---|
术语名称 | 八进制的 |
英语名称 | octal |
别名 | base-8, oct |
八进制数 | |
---|---|
术语名称 | 八进制数 |
英语名称 | octal number |
八进制(octal, base-2, 缩写为 oct)记数系统指基数为 8 的进位制记数法。是指通过 0~7 八个符号表达数值的满八进一的记数方法。
由于八进制可以作为二进制的缩写,计算机科学有时会使用八进制表达二进制数据。
定义
基数为 8 的进位制记数法称为八进制记数法(octal numeral system, base-8 numeral system, 简称 octal, base-8)。
八进制记数法下的数称为八进制数(octal number)。
类似地,“八进制系统相关的”往往使用八进制的(octal, 常缩写为 oct, 或 base-8)作为前缀。
表示
八进制中的每一位只含有 [math]\displaystyle{ 0,1,2,\cdots,7 }[/math] 八个符号。在写成数形式时,遵从进位制记数法的一般规则,由权重更高的位到权重更低的位写成一串,且存在小数部分时在位权为 [math]\displaystyle{ 8^0=1 }[/math] 的位后添加小数点。
若需要指出具体进制时,可使用一般的添加进制下标的形式,即 [math]\displaystyle{ 357_8 }[/math] 或 [math]\displaystyle{ (357)_2 }[/math] 。也有人使用缩写下标或后缀,即 [math]\displaystyle{ 1001100_\mathrm{oct} }[/math] 或 [math]\displaystyle{ 1001100\mathrm{o} }[/math] 。
在编程语言,特别是受到 C 语言影响的编程语言中,二进制数通常加前缀 0
、 0o
或 0O
,即 0357
。
使用
在现代计算机相关领域,八进制有时用于表达一个字节数据,此时八位组会被分为 2 + 3 + 3 的三组表达为八进制位。八进制位受到编程语言的广泛特殊支持是因为曾经有字长为 6 、 12 、 24 、 36 等的计算机系统。由于后续存储长度多逐渐变为按照 8 个二进制位划分,八进制表达内存的地位逐渐被十六进制取代。
数值及表示
位权
对八进制数,其小数点前的数位的位权为 1 ,向高位依次为 [math]\displaystyle{ 8,8^2,8^3,\cdots }[/math] 。
如果存在小数部分,则向低位也依次为 [math]\displaystyle{ 8^{-1},8^{-2},8^{-3},\cdots }[/math] 。
八进制转换为十进制
计算一个八进制数的十进制表示时,可以通过计算对应位权相加的方式,即 [math]\displaystyle{ a_n 2^n + a_{n-1} 2^{n-1} + \cdots + a_1 2^1 + a_0 }[/math] ,也可以通过 Hornor 法则将其看作多项式求值 [math]\displaystyle{ ((\cdots(a_n x + a_{n-1}) x + \cdots + a_1) x + a_0) \mid_{x=8} }[/math] 。
十进制转换为八进制
计算一个十进制数的二进制表示时有两种常见办法。
短除法:不断对 8 做带余除法,将余数作为得到的位,商继续循环,直到 0 为止。余数从最低位依次到最高位排列。
二进制转换为八进制
因为 8 本身是 2 的幂,这使得二进制-八进制混合进制是 2 进制本身。将一个二进制数按照位权为 1 的数位对齐的方式划分成 3 个一组的形式,则新的形式就可以看成一个八进制数,且其中每一位数都进一步地通过 3 位二进制数表示。将这些二进制数表示对应地换成八进制中的符号,就得到了对应整个数的八进制表示。
八进制转换为二进制
以上过程的逆过程,将八进制数每一位上的符号替换为 3 位二进制数,就得到了一个被 3 位分隔的二进制数。
一些常见数值表示
对有限小数,不列出其对应的无限循环小数形式。
整数(十进制) | 整数(八进制) | 分数(十进制) | 小数(八进制) |
---|---|---|---|
1 | 1 | 1/1 | 1 |
2 | 2 | 1/2 | 0.4 |
3 | 3 | 1/3 | [math]\displaystyle{ 0.\overline{25} }[/math] |
4 | 4 | 1/4 | 0.2 |
5 | 5 | 1/5 | [math]\displaystyle{ 0.\overline{1463} }[/math] |
6 | 6 | 1/6 | [math]\displaystyle{ 0.1\overline{25} }[/math] |
7 | 7 | 1/7 | [math]\displaystyle{ 0.\overline{1} }[/math] |
8 | 10 | 1/8 | 0.1 |
9 | 11 | 1/9 | [math]\displaystyle{ 0.\overline{07} }[/math] |
10 | 12 | 1/10 | [math]\displaystyle{ 0.0\overline{6314} }[/math] |
11 | 13 | 1/11 | [math]\displaystyle{ 0.\overline{0564272135} }[/math] |
12 | 14 | 1/12 | [math]\displaystyle{ 0.0\overline{52} }[/math] |
13 | 15 | 1/13 | [math]\displaystyle{ 0.\overline{0473} }[/math] |
14 | 16 | 1/14 | [math]\displaystyle{ 0.0\overline{4} }[/math] |
15 | 17 | 1/15 | [math]\displaystyle{ 0.\overline{0421} }[/math] |
16 | 20 | 1/16 | 0.04 |
记数系统 | |||
---|---|---|---|
位值制记数法 | 进位制记数法/标准位值制记数法(进制) | 二进制、八进制、十进制、十六进制、…… | |
非标准位值制记数法 | 带符号进位制记数法/ 平衡记数法(平衡进制) |
平衡三进制、…… | |
双射记数法(双射进制) | 一进制、双射十进制、双射二十六进制、…… | ||
位权是幂 但基数不是自然数 (非自然数进制) |
[math]\displaystyle{ -2 }[/math] 、 [math]\displaystyle{ -4 }[/math] 、…… | ||
[math]\displaystyle{ \sqrt{2} }[/math] 、 [math]\displaystyle{ \sqrt{3} }[/math] 、 [math]\displaystyle{ \sqrt[12]{2} }[/math] 、…… | |||
[math]\displaystyle{ 2i }[/math] 、 [math]\displaystyle{ \sqrt[4]{2}i }[/math] 、 [math]\displaystyle{ 2\omega }[/math] 、 [math]\displaystyle{ \sqrt[3]{2}\omega }[/math] 、 [math]\displaystyle{ -1\pm i }[/math] 、…… | |||
位权不是幂(混合进制) | 二五混合进制、阶乘进制、…… | ||
其他 | [math]\displaystyle{ p }[/math]-进数 | ||
质数记数法、…… | |||
符值制记数法 | 罗马记数法、希腊记数法、…… |