Language agnostic 在什么情况下使用八进制?

Language agnostic 在什么情况下使用八进制?,language-agnostic,octal,Language Agnostic,Octal,我见过二进制和十六进制经常使用,但从未见过八进制。然而,八进制在某些语言中使用有自己的约定(即,前导0表示八进制)。什么时候使用八进制?使用八进制或八进制更容易推理的典型情况是什么?或者这仅仅是一个品味的问题?当语法是某个平台上可能有意义的年代遗留下来的东西时(系统字并不总是8位的倍数),就使用八进制。现在,十六进制是一种使用方式。没有想到这一点,而是数字显示 其他用途包括: 八进制用作表示UNIX系统上文件权限的简写。例如,当一个字中的位数是3的倍数时,文件模式rwxr-xr-x将是0755八

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

当语法是某个平台上可能有意义的年代遗留下来的东西时(系统字并不总是8位的倍数),就使用八进制。现在,十六进制是一种使用方式。

没有想到这一点,而是数字显示

其他用途包括:

八进制用作表示UNIX系统上文件权限的简写。例如,当一个字中的位数是3的倍数时,文件模式
rwxr-xr-x
将是
0755

八进制。例如,具有18位字长的古代系统、具有9位字节的系统或具有9位或12位权限的unix文件


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

八进制过去更常用的主要原因之一是,在你的头脑中,八进制和二进制之间的转换比十六进制到二进制更容易:你只需要记住8个八进制数字(0-7)的二进制表示形式

回想当年,调试意味着从一排LED读取寄存器内容,或者使用一组切换开关输入数据,这是一个很大的问题。许多早期计算机上的面板将LED和开关分成三组,以便于实现这一点


然而,随着8位字节倍数的字大小开始占上风,十六进制开始占上风,并且不需要读取和输入二进制数据(使用控制台文本UI和更高版本的GUI调试器)。

,在一些地方,windows和javascript会自动确定以零为前缀的数字为八进制,并转换该数字

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

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


虽然不推荐使用Javascript,但如果您不指定基数,Javascript在某些函数(如parseInt)上默认会这样做,只要您远离(大多数)尖锐和扁平。在航空电子设备中,ARINC 429单词标签几乎总是以八进制表示。

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

但是,由于值只从0到7,从技术上讲,它与十进制或十六进制不一样吗?不,因为十进制中也有8和9,依此类推。@Neil不,因为它们会给你不同的数值--
0x755
是二进制的
0111010101
,而
0755
111101101
。那么,前者在unix文件权限中意味着完全不同的东西。啊,我认为每个数字都是单独应用的。“755”当然与十进制的对应词有很大不同。。。。。什么?一个“传统”(即钢琴上的)八度音阶有12种声音。12不是7。在任何一个极其严肃的音阶中,你都无法避免尖锐和平缓。半音音阶上有12个音符,而全音阶上只有7个音符。音符根据全音阶A-G标记,A-G是一种八进制编号系统。索尔菲奇也在全音阶上演奏。诚然,中间的其他5个半音需要额外的标记来表示,但OP询问了八进制编号的用法,而不是信息论,在信息论中,表示音乐的每个音符需要超过3位。任何使用Windows套接字的东西都会表现出这种记录在案的行为。显然,Perl也是。哦,还有米老鼠;-)同意,给出了更好的解释,并与另一个基数(十六进制)进行了比较