我经常看到二进制和十六进制的使用,但几乎没有看到过八进制。然而,八进制在某些编程语言中有它自己的约定(即前导 0 表示八进制)。那么什么时候会使用八进制呢?有哪些典型情况下使用八进制或八进制更容易理解?还是说这只是个人口味问题?
我经常看到二进制和十六进制的使用,但几乎没有看到过八进制。然而,八进制在某些编程语言中有它自己的约定(即前导 0 表示八进制)。那么什么时候会使用八进制呢?有哪些典型情况下使用八进制或八进制更容易理解?还是说这只是个人口味问题?
八进制用于字长为3的倍数的计算机系统,或将位分组成3位一组时有意义的情况。例如:
在我从事 IT 工作的约 25 年中,我没有遇到过除 Unix 文件权限位之外的八进制用途。
然而,如果您的字长是4的倍数,请务必使用十六进制。
八进制被用作UNIX系统上文件权限的简写表示。例如,文件模式rwxr-xr-x
将会是0755
。
0x755
在二进制中是011101010101
,而0755
则是111101101
。前者在Unix文件权限中的意义完全不同。 - SamB八进制在语法上是一个过时的遗物,也许在一些平台上它曾经有意义(系统字并不总是8位的倍数)。现在使用十六进制更为常见。
八进制曾经更常用的主要原因是它比十六进制更容易在脑中将其转换成二进制:你只需要记住8个八进制数字(0-7)的二进制表示。
回到那些调试意味着从一行LED灯读取寄存器内容或使用一组切换开关输入数据的日子,这是一个大问题。许多早期计算机的面板将LED和开关分为三组以方便进行此操作。
然而,随着字长为8位字节倍数的胜出以及在控制台文本UI和后来的GUI调试器中读取和输入数据变得不必要,十六进制开始赢得了胜利。
在航空电子学中,ARINC 429单词标签几乎总是以八进制表示。
音乐,只要你远离(大多数)升降号。
顺便提一下,有几个地方在 Windows 和 JavaScript 中会自动将以零为前缀的数字视为八进制并转换该数字。
在 Windows 中,如果你 ping 一个地址如 10.0.2.010,它实际上会 ping 到 10.0.2.8。
如果你将其输入为计算机的 IP/DNS 地址,Windows 也会这样做。
虽然已经被弃用,但是在某些函数(如 parseInt)中,如果你没有指定基数,JavaScript 默认会这样做 http://www.w3schools.com/jsref/jsref_parseint.asp。