问题标签 [bit-masks]

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 投票
1 回答
274 浏览

permissions - 位掩码权限 - 扩展/撤销权限

我有一个位掩码权限+角色集:

我正在寻找使用按位运算扩展撤销用户权限的最简单方法。

例如,一个用户有7 个设置为允许他的权限EDITDELETE并且ADD

我想添加VIEWand ADDor 12

将712扩展为15的最简单公式是什么,反之亦然?

我如何撤销用户现有的权限12 ( VIEW, ADD) 以撤销 ( DELETE, ADD) - 6使其等于8

0 投票
1 回答
786 浏览

ios - 1个物理对象上的多个碰撞位掩码?

一个物理体可以有 2 个不同的碰撞位掩码吗?

我有这个代码:

但我希望“bo”也与“bumperCategory”发生冲突。所以,我想它可能看起来像这样:

那是行不通的。反正有没有做类似的事情?

0 投票
0 回答
51 浏览

objective-c - 检查位掩码标志是否为零

我正在从服务器获取数据。第一位表示消息是否已读:1 表示“已读”,0 表示“未读”。第二位表示消息是否被编辑。

所以我正在尝试读取状态:

但我不明白如何检查零值(未读取和未编辑)。

0 投票
1 回答
2361 浏览

c# - 在c#中通过位掩码存储多个值

我正在尝试通过位掩码将四个独立的 5 位值 (0-31) 存储在 32 位 int 中,但无法正确设置值并从用于存储的掩码 int 中获取各个值。

谁能帮我这个?

编辑:

对不起外部链接 - 这里有一些 JavaScript 演示了我想要实现的目标(但使用位掩码而不是十进制代数):

输出:

编辑:

感谢 Peter Duniho,我能够使用内置的掩码来制作这些,以在 32 位整数中保存 6 个 5 位值的一些操作:

以及用于更少分配的 Set 函数的 byref 版本:

0 投票
1 回答
391 浏览

c# - Bitmasking small numeric values over a byte array without wasting space in c#?

I'm trying to extend this topic a bit by expanding it to cover 5-bit values packed into a byte[] data structure.

The specific objective I'm trying to achieve would be to store a total of 128 5-bit (0-31) numeric values in a 80-byte array with a get/set function to access and manipulate the values within the array.

Does anyone have experience with this?

Edit:

Thanks to Guffa in the accepted answer below, here's an inline version of his class for use in static calls:

0 投票
1 回答
71 浏览

algorithm - 在与大集合匹配时,选择一组特征以排除基于位掩码的项目的最佳方法是什么?

假设我有一个大型的静态对象集,并且我有一个对象,我想根据一组复杂的标准与所有这些对象进行匹配,这需要进行昂贵的测试。

还假设可以识别出可用于排除潜在匹配的大量特征,从而避免昂贵的测试。如果我正在测试的对象中存在某个特征,那么我可以排除集合中没有此特征的任何对象。换句话说,该特征的存在是必要的,但不足以使测试通过。

在这种情况下,我可以为集合中的每个对象预先计算一个位掩码,指示对象中是否存在每个特征。我还可以为要测试的对象计算它,然后像这样循环遍历数组(伪代码):

所以我的问题是,给定有限的位掩码大小、大量可能的特征,以及对象集中每个特征的频率表(如果你想计算特征之间的相关性,还可以访问对象集等等) ,我可以使用什么算法来选择包含在我的位掩码中的最佳特征集,以最大限度地增加早期输出的数量并最大限度地减少测试次数?

如果我只选择前 x 个最常见的特征,那么一个特征同时出现在两个掩码中的机会会更高,所以看起来早期出局的数量会减少。但是,如果我选择 x 最不常见的特征,那么 objectMask 可能经常为零,这意味着不可能提前出局。似乎很容易进行实验并提出一组可提供良好性能的中频功能,但我对是否存在理论上的最佳方法感兴趣。

注意:假设每个特征的频率在可能的 myObjects 集合中与在 objectSet 中的频率相同,尽管我很想知道如何处理,如果不是。我也很想知道是否有一种算法可以在给定要与集合匹配的大量候选对象样本的情况下找到最佳特征集。

可能的应用:将输入字符串与大量正则表达式进行匹配,使用诸如“必须以相同顺序包含相同字母,但可能在单词中的任何位置插入额外字符”之类的条件将字符串与大型单词词典进行匹配等。 示例特征:“包含文字字符 D”、“包含字符 F 和字符串后面的字符 G”等。显然,可能的特征集将高度依赖于特定的应用程序。

0 投票
1 回答
593 浏览

javascript - 在 Javascript 位掩码标志值中可以安全使用的最大整数是多少?

这主要只是一个健全性检查。

Mozilla_

所有位运算符的操作数都转换为二进制补码格式的有符号 32 位整数。

然后

数字 -2147483648 和 2147483647 是可通过 32 位有符号数表示的最小和最大整数。

由于 2147483647 是 0x7FFFFFFF,我相信 0x40000000(也就是说,不是0x80000000)是我可以安全地用作 javascript 标志值的最大数。但我想确保我没有错过任何东西或者没有其他问题。先感谢您!

0 投票
1 回答
1263 浏览

javascript - 64位位掩码和javascript

我目前正在与一个 javascript 问题作斗争,我有一个应该用作过滤器的 62 位位掩码。

我使用了这里的代码段,但在某些情况下我无法让它工作。 如何在javascript中对超过32位的变量进行按位与?

我不明白为什么 testBitmask(2147483648,2147483648) 返回 false,那是 2^31。2^32 => 真的。2^33 => 真的。

bAll 在这里变成负数,所以我假设 32 位 int 溢出,想法?

0 投票
2 回答
303 浏览

algorithm - 如何在 O(2^n) 的内存和 O(2^n *n) 的时间中检查是否存在哈密顿步行

我们可以简单地修改旅行商问题以得到在 O(2^N * N^2) 时间复杂度内是否存在 Hamilton walk。

但是我在 codeforces 上读到它可以在 O(2^N * N) Time 中解决这个问题。

虽然,我无法理解他们正在考虑的状态,但他们有点压缩旅行商问题的原始状态。

谁能给我一个详细的解释,我是位掩码+ DP的新手(事实上我今天开始了:D)

如果您愿意,可以查看Codeforces的第 4 点

0 投票
1 回答
332 浏览

ios - sprite kit swift,检测游戏结束的碰撞

我目前正在制作我的第一款游戏。我有一个ballCollideWithWall(_:Ball:)按预期调用的碰撞功能,但没有显示游戏结束场景。我验证了碰撞函数是通过使用调用的NSLog

然后在我的碰撞函数中调用它