51

我从来没有在我的代码中使用八进制数,也没有遇到任何使用它的代码(尽管是十六进制和位旋转)。

我大约在 1994 年开始使用 C/C++ 进行编程,所以也许我对这个还太年轻?旧代码是否使用八进制?C 通过添加 0 来支持这些,但是使用这些以 8 为基数的数字文字的代码在哪里?

4

13 回答 13

53

我最近不得不编写访问 3 位字段的网络协议代码。当你想调试它时,八进制会派上用场。

只是为了效果,你能告诉我这个的 3 位字段是什么吗?

0x492492

另一方面,这个相同的八进制数:

022222222

现在,最后,以二进制形式(3 个一组):

010 010 010 010 010 010 010 010
于 2008-09-04T19:36:40.530 回答
35

这些天我遇到八进制文字的唯一地方是在 Linux 中处理文件的权限位时,通常表示为 3 个八进制数字,其中每个数字分别代表文件所有者、组和其他用户的权限。

例如 0755(在大多数命令行工具中也只是 755)意味着文件所有者拥有完全权限(读、写、执行),而组和其他用户只有读和执行权限。

用八进制表示这些位可以更容易地确定设置了哪些权限。你可以一眼看出 0755 是什么意思,但不是 493 或 0x1ed。

于 2008-09-04T19:37:05.350 回答
29

来自维基百科

在八进制最初广泛用于计算时,IBM 大型机等系统使用 24 位(或 36 位)字。对于这些机器来说,八进制是二进制的理想缩写,因为八(或十二)位数字可以简洁地显示整个机器字(每个八进制数字覆盖三个二进制数字)。它还允许将数码管、七段显示器和计算器用于操作员控制台,从而降低成本;二进制显示太复杂而无法使用,十进制显示需要复杂的硬件来转换基数,而十六进制显示需要显示字母。

然而,所有现代计算平台都使用 16、32 或 64 位字,其中 8 位组成一个字节。在这样的系统上,将需要三个八进制数字,其中最重要的八进制数字仅代表两个二进制数字(在一个系列中,相同的八进制数字将代表下一个字节的一个二进制数字)。因此,十六进制在当今的编程语言中更常用,因为十六进制数字涵盖四个二进制数字,并且所有现代计算平台都有可以被四整除的机器字。某些具有 2 次方字长的平台仍然具有指令子字,如果以八进制显示则更容易理解;这包括 PDP-11。现代无处不在的 x86 架构也属于这一类,

-亚当

于 2008-09-04T19:34:05.123 回答
26

我从来没有在我的代码中使用八进制数,也没有遇到任何使用它的代码。

我敢打赌你有。根据标准,以零开头的数字文字是八进制的。这包括,微不足道的,0。每次您使用或看到文字零时,它都是八进制的。奇怪但真实。:-)

于 2009-10-24T23:33:18.133 回答
8

商业航空在古老的 Arinc 429 总线标准中使用八进制“标签”(基本上是消息类型 ID)。因此,在为航空电子应用程序编写代码时能够以八进制指定标签值是很好的......

于 2009-08-05T04:09:07.073 回答
6

我还看到飞机转发器中使用了八进制。模式 3a 应答器代码是一个 12 位数字,每个人都将其处理为 4 个八进制数。维基百科上有更多信息。我知道这通常与计算机无关,但 FAA 也使用计算机 :)。

于 2008-09-04T19:59:17.870 回答
5

它对 Unix 领域的chmodmkdir函数很有用,但除此之外,我想不出任何其他常见用途。

于 2008-09-04T19:31:04.020 回答
4

我是通过PDP-11接触到 Octal的,显然 C 语言也是如此:)

于 2008-09-04T19:42:21.310 回答
4

从 60 年代末和 70 年代开始,仍然有一堆旧的过程控制系统(霍尼韦尔 H4400、H45000 等)被安排使用带有八进制寻址的 24 位字。以美国何时建造最后一座核电站为例。

更换这些工业系统是一项非常重大的任务,因此您可能很幸运能够在它们灭绝之前在野外遇到一个,并惊叹于它们宏伟的自定义浮点格式!

于 2009-10-16T16:55:56.683 回答
4

tar 文件将信息存储为八进制整数值字符串

于 2009-10-24T23:27:57.017 回答
4

没有世俗的理由来修改可以追溯到语言诞生并且存在于无数程序中的标准。我还记得ASCII字符的八进制值,想得出A的十六进制值,但它是八进制的101;数字 0 是 060... ^C 是 003...

也就是说,我经常使用八进制表示。

现在,如果您真的想弯曲您的矿井,请查看 PDP-10 的文字格式...

于 2014-01-17T01:13:17.313 回答
3

任何学习在 PDP-8 上编程的人都会对八进制数感到温暖。字长为 12 位,分为 4 组,每组 3 位,所以 -1 是 7777 八进制。这种方案在 PDP-11 中得到延续,它有 16 位字,但仍然使用八进制表示各种事物,因此*NIX 文件权限方案一直存在。

于 2010-03-10T14:24:08.820 回答
1

八进制在第一个可用的显示硬件(7 段显示器)中是最有用的。这些原始显示器后来没有可用的解码器。

因此,数字寄存器输出被分组以适合仅能显示八 (8) 个符号的可用显示器:0,1,2 3,4,5,6,7。

此外,最初的 CRT 显像管是光栅扫描显示器,最简单的字符符号发生器相当于 7 段显示器。

像往常一样,激励驱动程序是最便宜的显示器。

于 2011-03-31T15:25:47.377 回答