问题标签 [bit-manipulation]

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 回答
8349 浏览

assembly - 如何仅使用逻辑运算符 AND 判断一个数字是否是四的倍数?

我正在搞乱汇编语言编程,我很好奇如何使用逻辑运算符 AND 判断一个数字是否是 4 的倍数?

我知道如何使用“div”或“remainder”指令来做到这一点,但我试图通过数字/单词的位操作来做到这一点。

谁能指出我正确的方向?我正在使用 MIP,但与语言无关的答案很好。

0 投票
3 回答
19559 浏览

assembly - 如何访问 MIPS 中单词的各个位的状态?

我正在编写一个程序,我需要确定是否设置了第 3 位和第 6 位。我知道我可以旋转一个单词或左/右移动它。

但是我如何访问单个位的状态?我是否使用像 and/xor 这样的按位运算符?

0 投票
7 回答
12968 浏览

language-agnostic - 如何使用按位运算设置或清除前 3 位?

可以说我有一个像0x448. 在二进制中,这是0100 0100 1000.

如何使用逐位运算将位 1、2 和 3 设置为全 0 或全 1?当我说前三个时,我将最右边的位视为零位。

所以,例如

位为 1:

位为 0:

我猜想将它们设置为 1 我使用按位或掩码为 14 (0x000e)?但如果是这种情况,我该如何做类似的事情来清除这些位?


有关的:

0 投票
23 回答
99316 浏览

c++ - 设置的最低有效位的位置

我正在寻找一种有效的方法来确定以整数设置的最低有效位的位置,例如对于 0x0FF0,它将是 4。

一个简单的实现是这样的:

任何想法如何挤出一些周期?

(注意:这个问题是给喜欢这些东西的人准备的,而不是让人们告诉我 xyzoptimization 是邪恶的。)

[编辑] 感谢大家的想法!我也学到了一些其他的东西。凉爽的!

0 投票
16 回答
134534 浏览

c++ - C++ 中循环移位(旋转)操作的最佳实践

左移和右移运算符(<< 和 >>)在 C++ 中已经可用。但是,我不知道如何执行循环移位或旋转操作。

如何执行“向左旋转”和“向右旋转”等操作?

在这里向右旋转两次

应该导致:

一个例子会很有帮助。

(编者注:如果旋转计数为零,或者编译为不只是单个旋转机器指令,那么在 C 中表达旋转的许多常见方式都会遭受未定义的行为。这个问题的答案应该记录最佳实践。)

0 投票
2 回答
764 浏览

sql - TSQL。获取一行中多列的按位总计

我有一个表,在 BIT 概念中有 4 组 25 列。实际上字段是smallint,但它的数据是0或1。

这是我的代码,它试图获取第一组 25 列的总数。

我的输出:

我没有得到总计@LocTotal

TIA

0 投票
6 回答
36126 浏览

bit-manipulation - 如何在未知大小的二进制数中将所有位设置为“1”?

我正在尝试在汇编中编写一个函数(但让我们假设该问题与语言无关)。

如何使用按位运算符将传入数字的所有位设置为 1?

我知道我可以将按位“或”与带有我希望设置的位的掩码一起使用,但我不知道如何根据一些 N 大小的二进制数构造掩码。

0 投票
4 回答
1932 浏览

language-agnostic - 使用右移和按位与查找二进制数的模式?

我正在尝试在汇编中编写一个函数,该函数将检测较长的二进制数是否包含较小的二进制模式。

示例:100111
是否包含1001

当我读到这个问题时,我想我会在每次循环中右移(逻辑)时对大数字及其较小的模式进行按位与运算。

所以,在我的脑海里,我认为它会这样做:

并重复此操作,直到数字移动到零或 AND 返回 1。

但是,我想我一定有些困惑,因为在循环的第一次运行中,对于我放入的大多数内容,这将返回 1。我对 AND 的用法感到困惑吗?

0 投票
8 回答
5378 浏览

c# - 通过打开的整数位进行枚举的最快方法

枚举整数并返回打开的每个位的指数的最快方法是什么?看过一个使用 << 的例子和另一个使用 Math.Pow 的例子。想知道是否还有其他真正快速的东西。

谢谢。

0 投票
3 回答
19609 浏览

c - 计算数字中的位数

复制:

计算 32 位整数中设置位数的最佳算法?


假设你有一个号码。有没有办法计算该数字的二进制表示中等于 1 的位,而不是使用迭代?我的意思是,有没有办法使用一些按位运算符和掩码在恒定时间内做到这一点。我需要适用于 32 位和 64 位架构的解决方案。啊差点忘了,我需要的是C语言或者汇编也不错。