问题标签 [bitflags]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
7 回答
627 浏览

language-agnostic - 如何选择位标志值?

我有一组选项,一些正交(可以以任何组合组合),一些排他(只允许从集合中选择一个),并且需要选择一组enum值,以便它们可以按位组合or并提取与位and。我希望or-ing 无效组合是可检测的。

有没有这样的生成工具enums

为清晰起见进行编辑

我正在寻找可以利用某些标志无效的事实来减少使用的位数的东西。我能够检测错误的要求是软的。如果事情搞砸了,我不需要知道使用了什么。

我正在使用 C#,但任何解决方案都应该有帮助。

一个示例模式是:

得到 6 个独占标志和 2 的正交对成 6 位

快速测试表明 5 位给出 9 个值,6 位给出 20,...

0 投票
4 回答
1836 浏览

c++ - 枚举位域容器类

我试图编写一个小类来更好地理解 C++ 中的位标志。但有些事情没有解决。它打印错误的值。哪里有问题?我是否误解了如何添加标志?或者检查位域是否有它们?

继承人的代码:

程序输出:

0 投票
6 回答
1551 浏览

c - #defined bitflags and enums - 在“c”中和平共处

我刚刚发现了位标志的乐趣。我有几个关于在 C 中使用位标志的“最佳实践”的问题。我从网上找到的各种示例中学到了一切,但仍有疑问。

为了节省空间,我在 struct ( A->flag) 中使用单个 32 位整数字段来表示几个不同的布尔属性集。总共有 20 个不同的位是#defined。其中一些是真正的存在/不存在标志(STORAGE-INTERNAL vs. STORAGE-EXTERNAL)。其他的有两个以上的值(例如互斥格式集:FORMAT-A、FORMAT-B、FORMAT-C)。我已经定义了用于设置特定位的宏(同时关闭互斥位)。我还定义了用于测试标志中是否设置了特定位组合的宏。

但是,在上述方法中丢失的是最能被枚举捕获的特定标志分组。对于编写函数,我想使用枚举(例如,STORAGE-TYPE 和 FORMAT-TYPE),这样函数定义看起来不错。我希望仅使用枚举来传递参数和#defined 宏来设置和测试标志。

  1. (a) 如何A->flag以可移植方式(跨 32 位/64 位平台)将标志 ( ) 定义为 32 位整数?

  2. (b) 我是否应该担心A->flag#defined 常量与枚举的存储方式的潜在大小差异?

  3. (c) 我是否让事情变得不必要地复杂,这意味着我应该坚持使用#defined 常量作为普通ints 传递参数吗?在这一切中我还应该担心什么?

对于这个表述不清的问题,我深表歉意。这反映了我对潜在问题的无知。

0 投票
4 回答
1509 浏览

c++ - C++ 中的位标志枚举

在 C++ 中使用枚举来存储位标志有点麻烦,因为一旦枚举值被 ORed,它们就会失去它们的枚举类型,这会在没有显式转换的情况下导致错误。

这个问题的公认答案建议重载|运算符:

我想知道这个方法是否有任何运行时影响?

0 投票
2 回答
3478 浏览

javascript - 如何在javascript中计算位标志?

我正在为 SEO 编写一个免费工具......从 seomoz 实现一个 api,标志看起来像这样

这些只是一些,但我不知道如何在 javascript 中计算正确的位标志......它只是我想要使用的标志的所有整数的 OR 吗?一个小片段向我展示如何制作一个包含其中一些标志的 var 会很棒......

感谢您的帮助!

0 投票
2 回答
381 浏览

c++ - 如何命名一组标志?

我有一个项目,其中许多对象通过维护简单的布尔标志来保持状态。这些有很多,所以我将它们维护在 a 中uint32_t并使用位掩码。现在有很多标志要跟踪,我为它们创建了一个抽象(只是一个包装 的类uint32_t)用set(),clear()等。

我的问题:这个类的准确、简洁的名称是什么?我可以给这门课起什么名字,这样你就可以合理地知道它是什么 [for] 只知道这个名字?

我的一些想法:

  • 旗银行
  • 标志数组
  • ETC

有任何想法吗?

提前致谢!
干杯,
-克里斯

0 投票
4 回答
204 浏览

algorithm - 是否有使用以 2 为底的数字对唯一选项列表进行编码的技术的名称?

对于这个问题相当模糊的性质,我深表歉意,我从来没有正式学习过编程,在这种情况下,谷歌对于像我这样的自助者来说毫无用处,因为关键词非常模棱两可。

我正在编写几个将选项列表编码和解码为 Long 的函数,以便它们可以轻松地在应用程序中传递,你知道这种事情:

1 - 苹果
2 - 橙子
4 - 香蕉
8 - 李子

在这种情况下,数字 11 代表 Apple、Orange 和 Plum。

我已经让它工作了,但我看到它一直在使用,所以假设该技术有一个通用名称,毫无疑问,目前我无法获得各种最佳实践和聪明的算法。

编辑:谢谢大家,我知道答案会很快到来:)

0 投票
6 回答
3022 浏览

c# - 为什么 [Flag] 的枚举从 0 开始并以 1 递增?

编辑:似乎大多数人误解了我的问题。

我知道枚举是如何工作的,而且我知道二进制。我想知道为什么带有 [Flags] 属性的枚举是这样设计的。

原帖:

这可能是重复的,但我没有找到任何其他帖子,所以这里。

我敢打赌,它背后有一些很好的理由,我只是觉得它有点容易出错。

如果它做这样的事情不是更有意义吗?

当然..我不太确定它应该如何处理这样的自定义标志

该规范给出了一些指导方针

以 2 的幂定义枚举常数,即 1、2、4、8 等。这意味着组合枚举常量中的各个标志不重叠。

但这也许应该自动完成,因为我敢打赌你永远不会希望我的第一个例子出现。请赐教:)

0 投票
6 回答
1263 浏览

c# - .NET 框架中位标志的实际使用

正在研究如何通过使用 flags 属性和 bitwize 运算符装饰枚举来将它们用作位标志(见下文)。

.NET 框架中是否有使用此模式的地方?我喜欢这个,但想看看更多现实生活中的例子

0 投票
4 回答
7161 浏览

python - 我应该如何在 django admin 中表示位标志 int 字段?

我有一个定义如下位域的数据模型:

并像这样使用:

我的问题是:

A)在管理站点中将不同位标志表示为单独项目的最简单方法是什么?我应该覆盖模板,还是对表单做些什么?

B) 搜索列表怎么样?我可以在模型中创建函数来表示每一位,但是如何进行搜索和排序呢?

我是 Django 的新手。