问题标签 [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 回答
7774 浏览

python - 给定一个列表和一个位掩码,我如何返回索引处的值为 True?

我从以下列表s和位掩码开始b

如何编写一些函数apply_bitmask(s, b)以使其返回

0 投票
1 回答
1837 浏览

gcc - 执行按位与(SPARC 汇编)时重定位溢出?

我正在尝试对寄存器执行按位与,作为位掩码以删除最高有效位(从 0 计数时恰好是第 16 位)。但是,当我尝试使用 gcc 编译我的代码时,它给了我以下错误消息:

汇编器消息:19:错误:重定位溢出

我的猜测是,这与我正在应用的位掩码的大小有关,因为当我对两个包含小数字的寄存器执行 AND 时,我不会遇到相同的错误。代码本身看起来像,

如果有人能就如何解决这个问题提供一些见解,将不胜感激。

谢谢,

坏熊猫

0 投票
5 回答
28664 浏览

java - Java 使用位

首先让我说我在编程之前从未真正使用过比特。我有一个可以处于 3 种状态的对象,我想使用 3 位数组来表示这些状态。
例如:

我有一辆赛车,它可以在静止状态下向前、向左和向右前进,
如果汽车向前移动,则位将为 010,如果向前和左,则位将是 110 等等...

我将如何设置这些位以及如何将它们读回以获取值?

0 投票
1 回答
698 浏览

tsql - 如何在 TSQL 中读取/写入完整的 32 位或 64 位 int 或 bigint 位掩码字段

设置第 32 位和第 64 位很棘手。

32位解决方案:

我让它适用于 32 位字段。诀窍是在将 POWER 函数的返回值转换为 int 之前将其转换为 binary(4)。如果您尝试直接转换为 int,而不先转换为 binary(4),则在对第 32 位(索引 31)进行操作时会出现算术溢出异常。此外,您必须确保传递给 POWER 的表达式具有足够大的类型(例如 bigint)以存储最大返回值 (2^31),否则 POWER 函数将引发算术溢出异常。


64位问题:

我打算对 64 位字段使用类似的方法,但是我发现 POWER 函数返回的值不准确,尽管表达式/返回值使用了 decimal(38) 类型。例如:“select POWER(CAST(2 as decimal(38)), 64)”返回 18446744073709552000(只有前 16 位数字是准确的)而不是 18446744073709551616 的正确值。即使我只将 2 提高到63次方,那个结果还是不准确的。

POWER 函数的文档表明“如果使用货币或数字数据类型,则内部转换为浮点数会导致精度损失。” (注意数字类型在功能上等同于十进制类型)。

我认为正确处理 64 位字段的唯一方法是对它们的 32 位一半进行操作,但这需要对 @bitindex 属性进行额外检查,以查看我需要对哪一半进行操作。是否有任何内置函数或更好的方法来显式设置 TSQL 中 32 位和 64 位位掩码字段中的最终位?

0 投票
2 回答
227 浏览

c++ - 同时修改整数中的位

我想知道如果我尝试在多个线程的字符/整数中设置位,我会丢失任何修改吗?我最初将全为零,线程只会将其设置为 1。系统架构是 x64。

谢谢,戈库尔。

0 投票
1 回答
5580 浏览

c# - 查找整数的集合位

好的,有个问题。我已经为选项组装了一个位掩码。基本上我的页面有一个列表框,允许多个选择将它们存储在整数列表(它们的 ID 值)中。总共有 14 个选择(所以 ID val 1-15)。我将它组装成位掩码的原因是因为我不想在数字中硬编码,以防我想向数据库表(列表框从中填充)添加选项。此外,我不想将 14 个参数发送到我的 SQL 存储过程(因此硬编码为数字 14)。我可以发送这个整数并解构它(稍后的步骤)。

但是,由于另一个原因,现在我需要找出在我的整数中设置了哪些位。基本上我有财产。get 从整数列表(从用户选择中获得)中组装位掩码,并返回该二进制十进制值的整数。这是我用于构建位掩码的汇编代码。

因此,如果设置了第一个、第二个和第四个,我的整数是 11。这有效,我测试了所有选择,它返回正确的整数/十进制值。

现在我需要帮助来制定我的设置方法。这需要获取我拥有的十进制/整数,找出设置了哪些位并将它们放回列表中。所以如果我有 11 作为我的值,我需要放入一个整数列表 1,2,4。有谁能够帮助我?

0 投票
5 回答
1942 浏览

python - 使用位掩码查找数据间隙

我面临着在数字序列中找到给定长度的不连续性(间隙)的问题。因此,例如,给定[1,2,3,7,8,9,10]和 的差距length=3,我会找到[4,5,6]。如果差距是length=4,我什么也找不到。当然,真正的序列要长得多。我在很多帖子中都看到了这个问题,它有各种应用程序和可能的实现。

我认为可能有效并且应该相对较快的一种方法是将完整集表示为一个位数组,其中包含 1 表示可用数字和 0 表示缺失 - 所以上面看起来像[1,1,1,0,0,0,1,1,1,1]。然后可能运行一个窗口函数,它将用完整的集合对给定长度的数组进行 XOR 掩码,直到所有位置的结果为 1。这将需要在大约 ~O(n) 内对整个序列进行单次传递,加上成本在每次运行中进行掩蔽。

这是我设法想出的:

这对于大约 100k(< 1 秒)来说相当快。我很感激有关如何使更大的集合更快/更有效的提示。谢谢!

0 投票
2 回答
853 浏览

windows - 单色位图SetPixel/GetPixel问题... Win32 C代码

这是我的一些位掩码代码(单色位图)。Bitmask_Create() 函数没有问题。我已经通过打开、加载和保存 Windows 单色位图对其进行了测试,效果很好。但是,我制作的 GetPixel 和 SetPixel 函数似乎无法正常工作。在某些情况下,它们似乎可以正常工作,具体取决于位图尺寸。

如果有人可以提供帮助,我将不胜感激。它快把我逼疯了。谢谢。

0 投票
4 回答
43932 浏览

c - 如何在 C 中仅设置字节的某些位而不影响其余位?

假设我有一个像 1010XXXX 这样的字节,其中 X 值可以是任何值。我想将低四位设置为特定模式,比如 1100,而高四位不受影响。我将如何在 C 中以最快的速度做到这一点?

0 投票
6 回答
22431 浏览

java - 位掩码问题?

我有以下内容:

我想了解如何计算得出以下结果,例如:12414

我对位掩码的工作原理一无所知,如果有人可以提供一些提示并解释它是如何达到这个数字的,我将非常感激。