问题标签 [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 投票
6 回答
29190 浏览

c++ - if (mask & VALUE) 还是 if ((mask & VALUE) == VALUE)?

您可能熟悉enum位掩码方案,例如:

我看过很多代码,然后测试掩码中的某个位,例如

但这不等于吗?

有什么理由使用第一个版本吗?在我看来,第二个较短的版本更清晰。

也许 C 程序员遗留下来的习惯认为应该将真值转换为1? (即使在那里,较长的版本在赋值或return语句中比在条件语句测试中更有意义。)

0 投票
3 回答
1564 浏览

database-design - 在数据库中存储标志

在我的应用程序中,我希望用户选择他的工作日。然后将它们存储在数据库中。当然,我的应用程序将处理用户的数据,例如:今天是特定用户的工作日,谁是今天应该工作的用户,......等等。

我的问题是,这样做的最佳做法是什么?我应该使用:

  1. 用户表中的位掩码字段
  2. 通过为 days、users 和 days_users 创建表来创建多对多关系表。先感谢您。
0 投票
3 回答
1328 浏览

java - 大端位掩码

这不是一个问题,而是一个健全性检查!

如果您需要将 4 个字节作为 Big endian 中的位掩码读入 Java,那么这些字节是:

0x00、0x01、0xB6、0x02。

将其转换为 int 将是:112130

二进制是:00000000000000011010011000000010

一系列字节的字节序不会影响位位置,不是吗?

谢谢

托尼

0 投票
2 回答
237 浏览

c++ - C++ 中 typedef 结构的混淆

我有一个我的教授编写的程序,它模拟内存写入 L2 缓存的方式。它有几个地方我应该填写空白。我应该做的第一件事是清除每个缓存条目的有效位。他给了我们以下信息:

因此,据我了解,清除有效位仅意味着将其设置为零。有效位是 v_d_tag 的第 31 位,所以我应该使用位掩码 - 我想按照“v_d_tag = v_d_tag & 0x80000000;”的方式做一些事情?但我不明白的是如何为每个缓存条目完成并执行此操作。我看到了缓存条目数组(l2_cache),但我看不到 v_d_tag 与它的关系。

谁能给我解释一下?

0 投票
2 回答
408 浏览

java - Java从函数中剥离零

我正在尝试在 Java 中翻转一些字节,而我拥有的函数对某些字节正常工作,而对其他字节则失败。

我正在使用的功能是这样的:

实现这一点的代码是:

字节从 ByteBuffer 中读取,byteOrder 为 Little Endian。

例如,字节 00 01 B6 02 将位掩码设置为:2B60100 - 这在我的程序中完美运行。

但是,如果字节为 A0 01 30 00,则 bitMask 设置为: 3001A0 - 已从位掩码中删除最后一个零。

有什么办法可以阻止 Java 删除尾随零?

我希望这是有道理的。

谢谢

托尼

0 投票
3 回答
5837 浏览

python - Python位掩码(可变长度)

为了解决一个研究问题,我们必须在 python 中组织位掩码搜索。作为输入,我们有一个原始数据(我们将其呈现为位序列)。大小约为 1,5Gb。作为输出,我们必须获得特定位掩码的出现次数。让我举个例子来描述这种情况

第一个想法(不是有效的)是像这样使用 XOR:

让我们进行 2 个第一步:

问题是:如何组织从输入中获取位?我们能够获取前 12 位,但是我们如何才能从 1 到 12 位置获取我们需要进行下一次迭代的位?

在我们使用 python BitString 包之前,但是我们搜索所有掩码所花费的时间非常高。还有一个。掩码的大小可以从 12 位到 256 位。有什么建议吗?任务必须在python中实现

0 投票
4 回答
48549 浏览

c++ - 使用位掩码组合枚举值

我知道可以在枚举值中使用位掩码,但我不知道如何创建它。

我有一个简单的枚举:

状态总是State.minimizedor State.maximized,并且可以在调整大小时具有其他状态。所以某些东西可以最大化和最小化

0 投票
1 回答
443 浏览

java - TopCoder FourBlocks 问题

下面的代码是一个流行的 topcoder 问题FourBlocks的答案(您需要登录)。该解决方案使用位掩码记忆来使用大小为 1 的块和大小为 4 的正方形块在网格中找到最大总和。有人可以帮助我理解它是如何工作的吗?这是做什么的

另外,函数 rec() 如何适合正方形?它只比较 2 位。

0 投票
1 回答
612 浏览

c# - 使用位掩码检查二进制文件的信息

我被赋予了以下编程任务(编辑以模糊任务细节):

可以查询原始(二进制)文件(阶段 II 实施所需)以检测 pod 是否存在。格式取决于文件的来源——FormatX 与 FormatY。使用 16 位字长,以下位掩码可用于确定文件中是否存在 pod:

到目前为止我是如何解决这个问题的:我在本地文件系统上有文件,所以我使用 System.IO.File.OpenRead 将它放入 Stream 对象。我想一次读取 16 位/2 字节的流。对于这种大小的第一个“单词”,我尝试应用位掩码来检测我正在处理的格式。然后我跳到第 13 个“单词”并根据该格式检测右/左 pod。

这是我编写的一些初步代码,但它不起作用。我知道我正在阅读的文件应该是 Y 格式,但我的检查不起作用。

谁能看到我的实现有什么问题?我应该如何解释 2 字节字长?

根据@Daniel Hilgarth 的回复进行编辑
感谢 Daniel 的快速回复。我进行了更改,现在它正在为第一个单词工作:

我只需要找到一个示例文件,该文件应该为安装的右/左 pod 返回一个肯定的结果来完成此任务。

0 投票
2 回答
10673 浏览

php - PHP中的位掩码用于设置?

位和位掩码是我一直在努力理解的东西,但我想学习如何在 PHP 中使用它们进行设置和类似的事情。

我终于找到了一个声称可以做到这一点的课程,据我所知,它似乎有效,但我不确定这是否是最好的方法。我将在下面发布带有示例代码的类文件,以按工作顺序显示它。

如果您有经验,请告诉我是否可以改进它,以提高性能或其他任何东西。我真的很想学习这个,我一直在阅读它,但到目前为止我很难掌握。

班上...

如何将权限设置/保存为位掩码值?

获取位掩码值并根据位值为每个数组项返回真/假的示例....