问题标签 [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.
language-agnostic - XOR 变量交换如何工作?
有人可以向我解释一下没有临时变量的两个变量的异或交换是如何工作的吗?
我了解它的作用,但是有人可以引导我了解它的工作原理吗?
c++ - 位运算符在 C++ 中附加两个无符号字符
如果我有两件事是十六进制的,我可以有人如何将他们的二进制文件附加在一起以获得一个值吗?
在 C++ 中,说我有
我想要的是不知何故,
1100001010100011
这可能使用按位运算符吗?
我想提取 t 和 q 的二进制形式并附加它们......
binary - 从有符号数中提取位域
我有以 32 位整数存储的有符号数字(2s 补码),我想从中提取 16 位字段。如果我从 32 位有符号数中提取低 16 位,只要原始(32 位)数适合 16 位,结果是否正确?
对于正数来说,这是微不足道的,对于负数来说似乎也是如此。但是可以证明吗?
提前致谢
algorithm - 计数,反转位模式
我正在尝试找到一种从 0 计数到 2 n -1 的算法,但它们的位模式颠倒了。我只关心一个词的 n LSB。你可能已经猜到我失败了。
对于 n=3:
你明白了。
伪代码的答案很棒。欢迎使用任何语言的代码片段,首选没有位操作的答案。
请不要只发布一个片段,甚至没有简短的解释或指向源的指针。
编辑:我忘了补充,我已经有一个简单的实现,它只是对计数变量进行位反转。从某种意义上说,这种方法并不算数。
apache-flex - ActionScript/Flex:按位与/或超过 32 位
问:有没有简单的方法(库函数)在 ActionScript 中对大于 32 位的数字执行按位与或或?
来自文档:“按位运算符在内部操作浮点数以将它们更改为 32 位整数。执行的确切操作取决于运算符,但所有按位运算分别评估 32 位整数的每个二进制数字(位)以计算一个新值。”
无赖...
我不能使用 & 或 | ops - AS 是否公开了一个库函数来为 Numbers 执行此操作?
细节:我将一堆 java 移植到 flex 并且 java 维护一堆“长”掩码。我知道我可以在 flex 端将 Java 掩码拆分为两个整数。由于我所有的面具操作都是本地化的,这不会太痛苦。但是,我想尽可能保持端口为 1-1。
有什么建议么?谢谢!
bit-manipulation - 在 Web 开发过程中何时使用位运算符?
虽然我掌握了位运算符的概念,但我不能说我在 Web 开发过程中遇到了许多不得不求助于位运算符的用例。
- 您使用按位运算符吗?
- 你为什么使用它们?
- 有哪些示例用例?
请记住,此问题专门用于在 Web 语言中使用位运算符。
c++ - 将字符数组视为比特流的 C/C++ 代码
我在 char[] 数组中有一大堆二进制数据,我需要将其解释为一个打包的 6 位值数组。
我可以坐下来写一些代码来做到这一点,但我认为必须有一个很好的现存类或有人已经写过的函数。
我需要的是这样的:
所以我可以通过调用获得数据中的第 7 个 6 位字符:
c - 设置、清除和测试单个位的算法说明
嘿,在 Programming Pearls 书中,有一个源代码用于设置、清除和测试 int 数组中的一些给定索引,实际上是一个集合表示。
代码如下:
有人可以解释一下 SHIFT 和 MASK 定义的原因吗?它们在代码中的用途是什么?
我已经阅读了之前的相关问题。
c - 为什么这个联合的大小是 2 位域?
我正在 Windows 上处理 turbo C,其中 char 占用一个字节。现在我的问题出在下面的联合上。
该程序将输出打印为 2,而 union 应该只占用 1 个字节。为什么会这样?
对于 struct 给出 1 个字节很好,但这个联合工作不正常。
还有一件事是如何访问这些位字段。
不起作用,因为我们无法获得位地址。所以我们必须使用另一个变量,如下所示
我们不能避免吗?有没有别的办法???
assembly - 在 1 条 ARM 指令中清除高 16 位
在 ARM 汇编中,立即数由 8 位旋转值编码,这意味着我们只能编码
现在我的问题是我想清除 r0 的高 16 位并将其替换为存储的半字 r1。但是由于立即数的范围有限,我必须做:-
是否可以用一条指令替换 2 条 bic 指令?0xffff0000 是不可编码的。也许我应该使用另一个逻辑操作来清除高 16 位?
谢谢
编辑:对不起,我忘了说 r1 的前 16 位是空的,我使用的是 ARM7TDMI