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

sql-server - SQL 服务器 | 对 int/smallint/tinyint 字段的按位运算

我想知道您是否可以对 SQL SERVER 中的 int/uint 字段进行按位运算?

0 投票
30 回答
160380 浏览

c - 在C中找到整数中最高设置位(msb)的最快/最有效方法是什么?

如果我有一些整数 n,并且我想知道最高有效位的位置(也就是说,如果最低有效位在右边,我想知道最左边的位是 1 的位置),找出最快/最有效的方法是什么?

我知道 POSIX 支持ffs()在 strings.h 中找到第一个设置位的方法,但似乎没有相应的fls()方法。

是否有一些我想念的非常明显的方法?

如果您不能使用 POSIX 函数来实现可移植性,那该怎么办?

编辑:一个适用于 32 位和 64 位架构的解决方案怎么样(许多代码清单似乎只适用于 32 位整数)。

0 投票
10 回答
4205 浏览

c++ - 一些随机的 C 问题(ascii 魔术和位运算符)

我正在尝试学习 C 编程,我正在研究一些源代码,有些东西我不明白,尤其是关于位运算符。我阅读了一些有关此的网站,并且对它们的作用有所了解,但是当我回头查看这些代码时,我无法理解它们为什么以及如何使用它们。

我的第一个问题与按位运算符无关,而是与一些 ascii 魔术有关:

  1. 有人可以向我解释以下代码是如何工作的吗?

    我知道这样做是为了将 char 转换为 int,但是我不明白它背后的逻辑。为什么/它是如何工作的?

  2. 现在,关于按位运算符,我觉得这里真的很迷茫。

    • 这段代码有什么作用?

      我在某处读到〜反转位,但我看不到这个语句在做什么以及为什么这样做。

      与此行相同:

      /li>
    • 其他问题:

      |= 运算符到底在做什么?根据我的阅读,|= 是 OR,但我不太明白这个语句在做什么。

      有什么方法可以重写此代码以使其更易于理解,以便它不使用此按位运算符?我发现它们很难理解,所以希望有人能指出正确的方向来理解它们如何更好地工作!


我现在对位运算符有了更好的理解,整个代码现在更有意义了。

最后一件事:显然没有人回应是否会有一种“更清洁”的方式来重写此代码,使其更易于理解,并且可能不是“位级”。有任何想法吗?

0 投票
14 回答
46973 浏览

java - 找出以二进制表示正整数所需的位数?

这可能是非常基本的,但是为了节省我一个小时左右的悲伤,谁能告诉我如何计算出在 Java 中表示给定正整数所需的位数?

例如,我得到一个小数点 11,(1011)。我需要得到答案,4。

我想如果我能弄清楚如何将除最高有效位之外的所有位设置为 0,然后 >>> 它,我就会得到答案。但是……我不能。

0 投票
6 回答
2440 浏览

c# - 将范围转换为位数组

我正在用 C# 编写一段对时间要求严格的代码,它要求我将定义包含范围的两个无符号整数转换为位字段。前任:

它可能有助于以相反的顺序可视化位

该范围的最大值是在运行时给出的参数,我们将其称为max_val. 因此,位域变量应该定义为一个UInt32大小等于的数组max_val/32

给定由变量x1和定义的范围x2,执行此转换的最快方法是什么?

0 投票
2 回答
3066 浏览

java - 在 Java 中,当使用位移时,为什么 1 << 32 != 1 << 31 << 1?

为什么a == 1呢?b正如我所料,是 0。

0 投票
7 回答
460 浏览

c++ - 测试位以创建字符串 - 有更好的方法吗?

这段代码有效,但我想知道是否有更好的方法来做到这一点。基本上我需要测试位,并根据位的状态将适当的字符写入字符串。存在空格是因为字符将以固定宽度的字体显示,我想防止它们四处移动。C 或 C++ 都可以。

0 投票
5 回答
29275 浏览

c# - 如何将位转换为字节?

我有一个代表位的 128 个布尔值数组。如何将这些 128 位表示形式转换为 16 字节?

例子:

我有一个看起来像这样的数组:

(转换为 1s 和 0s 更简洁)

我需要将这些位转换为以下字节数组:

编辑:这似乎不起作用:

它输出:

0 投票
7 回答
29725 浏览

c# - 左位移 255(作为一个字节)

谁能解释为什么以下内容无法编译?

错误:

常量值“510”不能转换为“字节”

我期待以下二进制文件:

类型转换难倒了我。

0 投票
25 回答
247652 浏览

c - C中位反转的高效算法(从MSB->LSB到LSB->MSB)

实现以下目标的最有效算法是什么:

0010 0000 => 0000 0100

转换是从 MSB->LSB 到 LSB->MSB。所有位必须颠倒;也就是说,这不是字节顺序交换。