38

我见过经常使用二进制和十六进制,但从来没有使用过八进制。然而,八进制在某些语言中使用有自己的约定(即,前导 0 表示八进制基数)。什么时候使用八进制?使用八进制或八进制更容易推理的典型情况有哪些?还是仅仅是口味问题?

4

9 回答 9

42

当一个字中的位数是 3 的倍数时,或者如果将位分组以 3 为一组表示有意义,则使用八进制。示例是

  • 具有 18 位字长的古代系统(主要是历史系统)
  • 具有 9 位字节的系统(大部分是历史的)
  • 具有 9 位的 unix 文件权限(3 * 3 位,“rwxr-x ---”0750)
  • 12bits的unix文件权限(与9bit版本相同,但在前面增加了三位setuid,setgid和sticky,01777但这里的字母更复杂)

在我大约 25 年的 IT 生涯中,除了 unix 文件权限位之外,我还没有遇到过任何八进制的使用。

但是,如果您的单词中的位数是 4 的倍数,请务必使用 hex

于 2010-04-09T17:19:09.677 回答
24

八进制用作表示 UNIX 系统上文件权限的简写。例如,文件模式rwxr-xr-x0755.

于 2010-04-09T17:13:27.063 回答
6

当语法在某些平台上可能有意义(系统字并不总是8位的倍数)时,使用八进制。如今,十六进制是使用的东西。

于 2010-04-09T17:11:56.083 回答
5

没想到这是数字显示器!

其他几种用途: http ://en.wikipedia.org/wiki/Octal

于 2010-04-09T17:11:59.993 回答
5

八进制被更频繁使用的主要原因之一是在八进制和二进制之间转换比十六进制到二进制更容易:您只需要记住 8 个八进制数字 (0-7) 的二进制表示。

早在调试意味着从一排 LED 读取寄存器内容或使用一系列拨动开关输入数据的时代,这是一个大问题。许多这些早期计算机上的面板将 LED 和开关按三组分组以促进这一点。

然而,随着 8 位字节的倍数字长开始占优势,十六进制开始占上风,并且不再需要以二进制形式读取和输入数据(使用控制台文本 UI 和后来的 GUI 调试器)。

于 2010-04-09T17:27:41.257 回答
4

如果鸟类可以数数,我猜他们会使用八进制数。虽然大多数鸟类的羽毛“手”上有 3 个手指,但大多数是四,这意味着每只脚上有 4 个脚趾。

于 2013-06-17T21:59:09.387 回答
3

在航空电子设备中,ARINC 429 字标签几乎总是以八进制表示。

于 2010-07-30T23:11:07.733 回答
1

音乐,只要你远离(大多数)升号和降号。

于 2010-07-30T22:50:20.583 回答
0

仅供参考,windows和javascript在某些地方会自动确定以零为前缀的数字是八进制并转换数字。

在 Windows 中,如果你 ping 和地址像 10.0.2.010 它实际上会 ping 10.0.2.8

如果您将其输入为计算机的 ip/dns 地址,Windows 也会执行此操作

尽管已弃用,但如果您未指定基数 http://www.w3schools.com/jsref/jsref_parseint.asp ,则默认情况下,Javascript 在 parseInt 等某些函数上执行此操作

于 2010-07-30T22:41:10.383 回答