【问题标题】:Name for a bitmask with 1-bit set [closed]设置为 1 位的位掩码的名称 [关闭]
【发布时间】:2010-07-18 00:23:14
【问题描述】:

在 C 和嵌入式中,人们经常使用枚举常量,其中每个值都是一个位掩码,恰好设置为 1 位。 (例如 0x0001、0x0002、0x0004 等)这种类型的位掩码有标准名称吗?我已经看到它们被称为标志,但更多的是传递而不是标准定义。我知道这听起来很势利,但“旗帜”似乎真的不够技术?其他人有这些的好名字吗?我无法想象没有人想出一个。

【问题讨论】:

标签: c embedded naming


【解决方案1】:

“标志”是公认的术语。 “传递一个标志”,“设置这个标志”等。

【讨论】:

  • 标志的维基百科条目是这样说的:标志是指一个或多个位,用于存储二进制值或代码。这正是我想要一些不那么通用的东西的原因。
  • 你不能总是得到你想要的。 “标志”是此功能的标准术语。
  • @ktrimbach,标志词的维基百科条目表明该名称强烈暗示单个位到单个标志的直接映射。而且我从未听说过用于表示多个位的术语。
【解决方案2】:

“标志”用于这些已经有几十年了,而且很好。我的旧 C64 已经有一个零标志、进位标志等。有关更多信息,请参见此处:

http://en.wikipedia.org/wiki/Flag_(computing%29

http://en.wikipedia.org/wiki/Status_register

我不知道这个词是什么时候创造的,是谁创造的。

【讨论】:

  • 维基百科链接专门讨论了状态寄存器和标志字。这些是硬件位标志。这可能就是它的来源,但我正在寻找更多的东西。
  • @ktrimbach:第一个链接(我已经编辑了我的帖子,所以现在可以使用)还说:'在其他情况下,二进制值可能代表一个位字段中的一个或多个属性,通常相关权限或权限,例如“可以写入”或“可以删除”。
【解决方案3】:

.NET 框架有一个 Flags 属性,用于准确指示您所描述的行为。

他们不只是为他们想要的任何东西编造名字,所以旗帜可能是最容易接受的术语。

【讨论】:

  • 这是一个很好的参考。 .NET 确实为枚举定义了一个 FlagAttribute,而 MSDN 确实像这样描述它。除了允许 ToString() 将多个枚举连接在一起之外,我不确定它有什么好处,但它是说明性的。
【解决方案4】:

我也见过“位旗”。

【讨论】:

  • 我发现了一篇 Dobbs 博士的文章,其中提到了“位标志枚举”。这有点(“双关语”)更接近我的想法。 drdobbs.com/184403893
【解决方案5】:

在数学中,单例集是一个只有一个元素的集合,因此您可以想象将它们称为单例位集或单例位掩码,但我在实践中没有看到这一点。

【讨论】:

  • 回答错了问题?
  • @Joshua,不确定你指的是什么。
  • 该值没有设置一位,组合值列表每个设置一位。
  • 我将这个问题读作询问各个常量。我看不出如何以其他方式解析它。例如看问题标题,或阅读前两句。老实说,我不明白你来自哪里。
  • 很好的参考。我猜想更学术的分析可能会包含该术语/概念。然而,Singleton 已经是 OOD 中众所周知的设计模式,所以我不确定我是否可以使用它来解决这个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-29
  • 2011-07-16
  • 1970-01-01
相关资源
最近更新 更多