在啥情况下使用八进制?

Posted

技术标签:

【中文标题】在啥情况下使用八进制?【英文标题】:In what situations is octal base used?在什么情况下使用八进制? 【发布时间】:2011-02-06 06:08:00 【问题描述】:

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

【问题讨论】:

【参考方案1】:

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

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

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

但是,如果您的单词中的位数是 4 的倍数,请务必使用十六进制

【讨论】:

这是一个非答案。根据其定义,数字系统不是“使用”的。该问题询问了应用八进制的示例。【参考方案2】:

八进制用于表示 UNIX 系统上的文件权限的简写。例如,文件模式rwxr-xr-x 将是0755

【讨论】:

但由于值仅从 0 到 7,在技术上不与十进制或十六进制相同吗? 不,因为在十进制中你也会有 8 和 9,等等。 @Neil 不,因为它们会给你不同的数值——0x755 是二进制的011101010101,而0755111101101。那么,前者意味着在 unix 文件权限方面完全不同。 啊,我在想每个数字都是单独应用的。 “755”当然与其对应的十进制有很大不同。【参考方案3】:

当语法在某些平台上可能是有意义的时代的遗物时使用八进制(系统字并不总是8位的倍数)。现在可以使用十六进制。

【讨论】:

【参考方案4】:

没想到这是数字显示器!

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

【讨论】:

【参考方案5】:

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

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

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

【讨论】:

【参考方案6】:

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

【讨论】:

哦,还有米老鼠 ;-)【参考方案7】:

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

【讨论】:

【参考方案8】:

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

【讨论】:

.... 什么?一个“传统”(即钢琴)八度有 12 个声音。 12. 不是 7. 而且你无法避免在任何严重的事情中出现锐利和扁平。 半音阶有 12 个音符,但全音阶只有 7 个。音符根据全音阶 A-G 标记,这是一种八进制编号系统。 Solfège 也使用全音阶音阶。诚然,中间的其他 5 个半音需要额外的标记来表示,但 OP 询问了八进制编号的使用,而不是信息论,其中表示音乐当然需要每个音符超过 3 位。 【参考方案9】:

仅供参考,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)上执行此操作

【讨论】:

任何使用 Windows Sockets inet_addr() 的东西都会表现出这种记录在案的行为。 显然也是 Perl。 C 在语言本身和标准库中都以这种方式工作(其中“0”前缀导致数字文字以八进制表示法解释)。因此,Windows 等操作系统继承了这种行为也就不足为奇了。

以上是关于在啥情况下使用八进制?的主要内容,如果未能解决你的问题,请参考以下文章

如何在不使用循环的情况下将二进制转换为十进制?

在啥情况下可以使用指针混合?

在啥情况下我可以使用 zip 和 combineLatest? RxSwift

在啥情况下我使用 Json 或 Hibernate?

在啥情况下我们必须使用 localstorage 而不是 cookie? [复制]

为啥 WCF 如此重要,在啥情况下使用它?