八进制

来自GSXAB的知识库
八进制
术语名称 八进制
英语名称 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 语言影响的编程语言中,二进制数通常加前缀 00o0O ,即 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]-进数
质数记数法、……
符值制记数法 罗马记数法希腊记数法、……