问题标签 [bitmask]

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 投票
4 回答
671 浏览

ruby-on-rails - 如何使用位掩码存储工作计划信息?

创建一个非常简单的日程安排应用程序

我要求用户告诉我他们在哪一天工作,以及他们在某一天是早上、午餐还是晚上工作

因此,对于给定的用户,她的数据可能是以下矩阵中的一个或所有点

我需要能够快速检索此信息,以便提醒用户该上班了。我会有很多用户。

我不在乎具体的日期或时间。只有离散的第 1 天到第 7 天以及每天的 3 个时段。当然,有许多可能的组合。

我正在考虑如何存储这些信息。而且我想知道位掩码是否合适/可行/“使用这样的方法”?你会如何处理这个问题?

谢谢!

0 投票
1 回答
882 浏览

c++ - 在 C++ 中,使用 iOS 本机库公开的 C 位掩码(匿名枚举)

Cocoa 使用 typedef-ed 匿名枚举位域。

我正在使用 Objective-C++,无论好坏。在 .mm 文件中,我需要将 2 位(按位包含 OR)分配给这些枚举位域类型之一的类型的属性。libc++ 编译器不会拥有它,因为它不会将 int 类型的右值赋予该 typedef-ed 匿名枚举位域的属性。

我知道 C 和 C++ 之间存在枚举的大小差异。那么这种情况的解决方法是什么?

我执行任务的线路类似于:

位域的定义类似于:

错误是:

无法使用“int”类型的右值初始化“UISwipeDirection”类型的参数

这种分配适用于.m文件,但不适用于.mm

编译器是 Apple 的 LLVM 3.0(使用 libc++)。

0 投票
2 回答
608 浏览

bitmask - 生成长度为 n 且具有相同数量的 1 和 0 的二进制数

问题与标题相同。我做了两种方法。一是直截了当。生成所有位掩码

2^{n-1}

2^n

对于每个位掩码,检查是否存在相同数量的 1 和 0,如果是,则对其进行处理。这就是问题所在,因为我必须处理这些位掩码,而不仅仅是计算它们。

我采用了第二种方法,它在 O(2^{n/2}) 时间运行,但似乎它没有生成所有位掩码,我不知道为什么。

第二种方法是这样的:生成从 0 到 2^{n/2} 的所有位掩码并具有有效的位掩码(称为 B)我必须做这样的事情:B#~B

其中〜是负数。

例如,我有 n=6,所以我将生成长度为 3 的位掩码。

例如我有 B=101,所以 ~B 将是 010,最终位掩码将是 101010,正如我们所见,我们有相同数量的 1 和 0。

这种方法是好的还是我正在实施一些不好的事情?也许存在另一种有趣的方法?谢谢

克里斯

0 投票
1 回答
1054 浏览

c - 国际象棋滑动件位板

我很容易理解非滑动件,但我在滑动件上遇到了一些麻烦。

我目前有 64 个位板(每个正方形 1 个,未保存在数组中,以及 8 个用于屏蔽行的位板,8 个用于清除行的位板,8 个用于屏蔽列的位板,以及 8 个用于清除列的位板,当然还有,每种类型的棋子都有一个位板。

在为主教和车生成合法移动时,我听说您应该在列/行上获得第一个被占用的方格。

我的问题是:

  • 你怎么知道车在哪里以及它与适当的面具一起。
  • 您如何准确地获得对角线中第一个占据的正方形以及主教。
  • 如果您知道任何其他常见的位板可以在以后帮助我完成任务,请告诉我。

目前我没有分支,并且希望减少我使用的分支数量,但我觉得这里需要一些分支,并且对解决这个问题的最有效方法感到好奇。

0 投票
2 回答
787 浏览

linux - linux capability.h 如何对 34 个元素使用 32 位掩码?

/usr/include/linux/capability.h#defines中的文件定义了 34 种可能的功能。它是这样的:

每个进程都有这样定义的能力

我很困惑——一个进程可以有 32 位的有效能力,但在capability.h 中定义的能力总量是 34。如何在 32 位掩码中编码 34 个位置?

0 投票
1 回答
244 浏览

postgresql - 在 Postgresql 中选择位掩码

我有一个包含“一”和“二”列的表格:

我想写一个查询来补充它缺少的嵌套值

然后我会用 选择它array_agg(two) group by one,这样

并最终使用 COPY 查询将其导出到 CSV 文件中

第一步我应该写什么查询?

0 投票
5 回答
406 浏览

database - 是否有一种优雅的方式来存储双重关系(即用户 1 和用户 2 是朋友)

这个月我在两份不同的工作中遇到了同样的问题:

问题是,我没有看到一种优雅的方式,使用 RDBMS 来存储和查询这些信息。

有两种明显的方法:

方法一:

方法二:

我想知道是否有第三种方法符合“使用 f(x,y) 的键,其中 f(x,y) 对于每个 x,y 组合都是唯一的,而 f(x,y) === f(y,x)"

我的直觉告诉我,应该有一些按位运算的组合可以满足这些要求。类似于两列的东西:

键1 = x && y 键2 = x + y

我希望那些在数学系花费更多时间而在社会学系花费较少时间的人已经看到了这种可能性或不可能性的证据,并且可以提供一个快速的“[你白痴]它很容易证明(im)可能,请参阅此链接“(名称调用可选)

任何其他优雅的方法也将受到欢迎。

谢谢

0 投票
3 回答
2127 浏览

java - 我可以在 Java 中创建没有条件的 1 到 64 位位掩码吗?

我想编写一个函数,它采用 1 到 64 之间的 int,并返回一个适当的“位掩码”,其中 1 位与输入一样多。

我是这样开始的:

但意识到它为 64 提供了错误的值:

现在我有这个:

比较难看。并且条件可以改变控制流,因此它们比简单的算术运算更昂贵。我可以预先计算掩码并将它们放入静态数组中,但数组访问也比简单的算术运算更昂贵,甚至可能比条件更昂贵。

有没有一种合理的方式来写这个没有条件?这段代码每秒要运行无数次,所以它必须很快。

0 投票
2 回答
2852 浏览

sqlite - 使用 SQLite 进行位掩码分组

当每个表都有一个用于保存一些位掩码枚举的字段时,我有一个 sqlite 表。

我想执行一个查询,它将返回所有结果并将所有枚举分组到一个字段中:

服务:TEXT 名称、INTEGER 服务、INTEGER 掩码

基本上,我希望 XXX 是每个服务的所有掩码的位掩码 OR (|) 的结果。

数据:

因此,我想获得以下行:

谢谢

编辑: 在我原来的问题中,我忘了提到每个掩码不是一个位,而是可以是多个位的掩码(我已经更改了第二个示例以反映这一点)。

0 投票
5 回答
6171 浏览

c - 使用 C 中的位掩码和位运算符检查字符是否为 ASCII

我需要编写程序来检查标准输入中的每个单独的字符,看看它是否是一个 ASCII 字符。我知道它需要检查的是第 8 位(代码中的第 7 位,如果我没记错的话)是否为 0,因为 ASCII 仅使用 7 位,但我很难弄清楚如何让它检查具体位。这是我在撰写本文时所拥有的。

我知道我还没有正确实施编码器来检查每个字符值,但我稍后会担心。现在我只需要帮助它检查变量中的特定位。

这也是我第一次在这里提问,所以请原谅我的问题格式不正确。