问题标签 [bitwise-operators]
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.
c++ - 用于 std::string 的 C++ 位运算符
我的问题是关于如何在 C++ 上使用位运算符std::string
。通过重载或作为函数没有关系。
^
的工作 XOR/函数示例std::string
:
我现在缺少的是 NOT/ ~
, AND/&
加上 OR/的替代品|
。示例 C++ 代码(最后两行想要它... :-P):
在 PHP/Perl 我可以做一些讨厌的事情:-P 像这样的事情
...我想念它;-)。但是 XOR 有效。我怎样才能得到 AND/OR/NOT?
postgresql - Postgres 中的位掩码
我有这个查询
我收到以下错误:
PGError:错误:运算符不存在:字符变化和整数
提示:没有运算符与给定名称和参数类型匹配。您可能需要添加显式类型转换。
models_mask 是数据库中的整数。我怎样才能解决这个问题。
谢谢!
c++ - 在 C/C++ 中从 64 位值中获取 32 位字,而不用担心字节顺序
我的理解是,在 C/C++ 中,位运算符应该是独立于字节序的,并且按照您期望的方式运行。我想确保我真正从 64 位值中得到最重要和最不重要的字,而不用担心机器的字节顺序。这是一个例子:
这行得通吗?
c - C中数字的二进制表示
我遇到了这个数字的二进制表示的代码。我想知道使用的必要性!!在代码中。
python - 使用按位运算求 n = 2**x 的指数 [n 的以 2 为底的对数]
有没有一种直接的方法可以仅使用按位运算从 2 的幂中提取指数?
编辑:虽然这个问题最初是关于按位运算的,但如果您想知道“在 Python 中给定 Y = 2 X找到 X 的最快方法是什么?”**
我目前正在尝试优化一个减少表单中偶数N的例程( Rabin-Miller primality test ) 。我可以通过以下方式获得零件:2**s * d
2**s
但我找不到通过按位运算仅提取“ s ”的方法。我目前正在测试的解决方法不太满意(它们都非常慢)是:
- 使用对数函数
- 操作 2**s 的二进制表示(即计算尾随零)
- 循环除以 2 直到结果为 1
我正在使用 python,但我想这个问题的答案应该与语言无关。
c++ - 与更具可读性的方法相比,C++ 中按位异或的效率
我最近一直在为我正在从事的研究项目编写一些代码,其中效率非常重要。我一直在考虑删除一些我做事的常规方法,并改用按位异或。我想知道的是,这是否会有所不同(如果我正在执行此操作说几百万次),或者在我在 g++ 中使用 03 之后是否相同。
想到的两个例子:
我有一个实例(我正在使用纯正整数)如果 n 是奇数,我需要将 n 更改为 n-1 ,如果 n 是偶数,我需要将 n 更改为 (n+1) 。我想我有几个选择:
或者
最后:
所有方法显然都做同样的事情,但我的感觉是第三种方法是最有效的。
下一个例子是一个更一般的注释。假设我正在比较两个正整数,其中一个会比其他的表现更好。或者即使我执行此操作数百万次,差异是否真的不明显:
编译器会在所有这些实例中执行相同的操作吗?我只是好奇是否存在我应该使用按位运算而不相信编译器为我完成工作的实例。
修正:在正确的问题陈述中。
c++ - 如何将 int 用作整数/布尔数组?
我在编写程序时注意到,我的许多int
类型变量从未超过 10。我认为因为 anint
最短为 2 个字节(如果计算为 1 char
),所以我应该能够unsigned ints
在一个短整数中存储最大值为 15 的 4,并且我知道我可以使用>>
and单独访问每个字节<<
:
但是,我不知道如何将它包含在类的函数中,因为任何类型的GetVal()
函数都必须是 type int
,这首先破坏了隔离位的目的。
c# - C#:在按位枚举中获取最低值的键
我有这样的枚举
我有以下
我想获得 k1 中具有最低值的键。我怎样才能做到这一点?
例子:
algorithm - 按位摆弄的算法
如果我有一个 32 位二进制数,并且我想用我拥有的 16 位数字替换该二进制数的低 16 位,并保留该数字的高 16 位以产生一个新的二进制数。如何使用简单的按位运算符来做到这一点?
例如 32 位二进制数是:
我拥有的较低的 16 位是:
所以结果是:
我怎样才能做到这一点?
c++ - C/C++:动态分配内存上的位运算符
在 C/C++ 中,是否有一种简单的方法将按位运算符(特别是左/右移位)应用于动态分配的内存?
例如,假设我这样做了:
我想要一种方法来做到这一点:
(那么“字节”将具有以下值):
为什么价值观应该是这样的:
分配后,字节如下所示:
但我希望将字节视为一长串位,如下所示:
右移两位将导致这些位看起来像这样:
当分成 3 个字节(因此是 0、64、64)时,它最终看起来像这样:
有任何想法吗?我应该创建一个结构/类并重载适当的运算符吗?编辑:如果是这样,有关如何进行的任何提示?注意:我正在寻找一种方法来自己实施(有一些指导)作为学习经验。