【问题标题】:Who needs octal representation? [duplicate]谁需要八进制表示? [复制]
【发布时间】:2014-04-15 11:36:04
【问题描述】:

根据我的理解,数字映射中的八进制数字为 3 位段,永远不会真正代表 2^n 长度的二进制字符串。

出于好奇,这何时/为什么/如何有用? :-)

..如果架构中单词的主要表示的基础是 素数(!) 2 的幂,至少确保它是 甚至 ;-)。

【问题讨论】:

  • 我认为它更多的是关于历史而不是关于当前的有用性。很久以前,我至少使用过一台实际处理八进制值的计算机(称为 Alpha Micro)。
  • 如果您不想在数字中出现字母。八进制通常需要在左侧隐式添加额外的 0,但这通常不会改变值。
  • 如果你有一台 6 位计算机...
  • @Rob 如果您有一台 36 位计算机。 (从前它们很常见。)
  • 没用,是病毒。它于 1970 年代初从数字设备公司(又名 DEC)的所在地 Maynard MA 逃脱。他们所有的文档和工具都使用八进制表示法。反过来又感染了 C 和 Unix,PDP-11 是主要的载体。这感染了许多后续语言,因为它们的编译器和运行时库通常首先用 C 实现。

标签: c++ c octal representation


【解决方案1】:

八进制可以精确地表示任意长度的二进制字符串。 虽然确实有 8 位字节和字节寻址, 十六进制似乎更自然。然而,从历史上看……

  • 很多机器都有 36 位字,其中八进制数 感觉,和

  • 在 PDP-11(第一个 C 编译器在其上运行)上, 机器指令分为 3 位组:高位 位来标记操作是针对字节还是字,然后 一个 3 位操作码和两个 6 位地址,第一个 3 位寻址模式和第二个 3 寄存器 参与。

在最初发明 C 的时候,八进制可能是 比十六进制更常用,因此 为其提供的语言。 (我不记得实际看到过 然而,在最近的代码中使用了很长时间。)

【讨论】:

  • 我认为从技术上讲,每次您在代码中看到文字 0 时,您都在查看八进制 :)
  • @NigelHarper 正式。实际上,对于 0 到 7 之间的值,八进制和十进制之间没有区别。
【解决方案2】:

在 Unix 开发时代,有 36 位字的机器 (DEC)。一个 36 位字由四个 9 位字节组成,每个字节由三个八进制数字表示。

【讨论】:

  • IBM 也是,实际上主要是市场份额。事实上,18 位 COBOL 规则来自 36 位 IBM 硬件和 BCD。
猜你喜欢
  • 2021-12-08
  • 2019-07-17
  • 2020-02-10
  • 2018-11-10
  • 1970-01-01
  • 2011-10-31
  • 2012-10-20
  • 2014-03-11
  • 2021-04-02
相关资源
最近更新 更多