当前位置:  开发笔记 > 运维 > 正文

八进制数字文字:什么时候?为什么?自从?

如何解决《八进制数字文字:什么时候?为什么?自从?》经验,为你挑选了7个好方法。

我从来没有在我的代码中使用八进制数字,也没有遇到任何使用它的代码(尽管有十六进制和bit twddling).

我在1994年开始用C/C++编程,所以也许我太年轻了?旧代码使用八进制吗?C包含对这些的支持,前缀为0,但使用这些基数为8的数字的代码在哪里?



1> Ben Collins..:

我最近不得不编写访问3位字段的网络协议代码.当您想要调试时,Octal会派上用场.

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

0x492492

另一方面,八进制中的相同数字:

022222222

现在,最后,以二进制(以3为一组):

010 010 010 010 010 010 010 010



2> Chris AtLee..:

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

例如0755(对于大多数命令行工具也只是755)意味着文件所有者具有完全权限(读取,写入,执行),并且组和其他用户只具有读取和执行权限.

以八进制表示这些位可以更容易地确定设置的权限.您可以一眼看出0755的含义,但不是493或0x1ed.



3> Adam Davis..:

来自维基百科

当八进制最初被广泛用于计算时,诸如IBM大型机之类的系统使用24位(或36位)字.Octal是这些机器的理想二进制缩写,因为八(或十二)个数字可以简洁地显示整个机器字(每个八进制数字覆盖三个二进制数字).它还通过允许Nixie管,七段显示器和计算器用于操作员控制台来降低成本; 在二进制显示太复杂而无法使用的情况下,十进制显示需要复杂的硬件来转换基数,以及显示字母所需的十六进制显示.

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

-亚当



4> Tim..:

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

我打赌你有.根据标准,以零开头的数字文字是八进制的.这包括,平凡的,0.每次使用或看到字面零时,这都是八进制的.奇怪但真实.:-)


我想你可能弄错了.ISO/IEC 9899:201x的6.4.4.1节规定了文字常量可以采用的形式,并且`0`明确地列为八进制常量.此外,十进制常量不能以零开头.您可以在线[此处]查看此标准的草稿(http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf).
事实并非如此.Octal以'0'作为指示符开始.就像'0x'不是有效数字一样,'0'不是八进制数.'00'是.
@LucBloom`0`实际上是**八进制的。请参阅[0是十进制文字还是八进制文字?](/sf/ask/17360801/)

5> 小智..:

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



6> John Meagher..:

我也看到八进制用于飞机转发器.模式-3a转发器代码是一个12位数字,每个人处理4个八进制数字.有关维基百科的更多信息.我知道它通常与计算机无关,但FAA也使用计算机:).



7> Greg Hewgill..:

它是有用的chmod,并mkdir在Unix的用地功能布局,但除了我想不出任何其他常见的用途.

推荐阅读
手机用户2502852037
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有