问题标签 [bitwise-or]

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 投票
1 回答
123 浏览

python - 按位或在类对象上

在以下代码中使用按位或运算符如何防止被覆盖?我知道按位或如何处理数字,但我无法理解它在这里的用途:item.flags() | QtCore.Qt.ItemIsEditableQtCoreitem.flags

0 投票
0 回答
107 浏览

java - java - 使用后短路|

我在 dmoj 上做了一个问题,它说有一个短路错误。

我在另一篇文章中读到,为了防止短路错误,请使用 single|而不是||. 但是,当我将 if 语句切换为使用 single|时,它​​仍然给了我同样的错误。

0 投票
1 回答
13063 浏览

c++ - (C++)在按位或运算时出现错误“非法指令(核心转储)”

所以,我仍在学习按位运算,无法弄清楚为什么会发生这个错误。我已经用谷歌搜索了它,似乎在弄乱堆栈时会发生此错误,或者在某些情况下,它与 CPU 架构有关。我尝试使用不同的标志进行编译,这些标志应该有帮助,但我无法让它工作。

这是快速的代码:

并且错误“非法指令(核心转储)”发生在该行

corners |= (material << i);

这是调试器的输出:

我将给出这个循环的输出(它永远不会超过第一个循环)。这是 couts 的代码:

这是输出:

我将非常感谢有人能给我关于为什么会发生这种情况的任何见解,如果有明确的原因,如何解决问题。

谢谢!

0 投票
2 回答
426 浏览

javascript - JS 按位 - Math.random() * 2 被解释为 0 和 1 以进行按位或 (|) 操作的规则是什么?

为什么要在http://javascriptissexy.com/javascript-apply-call-and-bind-methods-are-essential-for-javascript-professionals/上学习 bind() 方法,我遇到了一个看起来像这样的有趣计算:

试图了解什么 | 确实,我遇到了 JavaScript 位运算符(https://www.w3schools.com/js/js_bitwise.asp)。

我知道这(Math.random () * 2 | 0)是一个按位或运算。

我掌握了Math.random() * 2有时按位值给出 0 或 1 的值(例如,0.06218657045669751 被解释为 1)。我写了一个函数来检查,在什么情况下Math.random() * 2计算结果被视为0,在什么情况下被视为1:

结果没有给我任何问题的答案。因为如果Math.random() * 2给出 1.5337258727722651 它也可以解释为 1 和 0。

这种解释是随机的还是背后有任何逻辑?

0 投票
2 回答
22981 浏览

java - 如何在 Kotlin 中使用 Java 的位运算符?

Java 有二元或 |二元与 &运算符:

它们似乎不适用于 Kotlin:

如何在 Kotlin 中使用 Java 的位运算符?

0 投票
1 回答
60 浏览

c - 使用按位或时读取无效

不小心写了

其中var是 anint和 List a int*(整数数组)。

我的意思是写

我知道

运算符 |、& 和 ~ 并行作用于各个位。它们只能用于整数类型。一个 | b 对 a 的每个位与 b 的相应位进行独立的 OR 运算,以生成该位结果。

从这里引用。

我不明白的是valgrind(带有选项--leak-check=full)在第一种情况下给了我错误Invalid read of size 8,而在第二种情况下没有错误。

var我认为在这两种情况下对和的数据访问List是相同的。

结果是什么类型的List == NULL

0 投票
4 回答
678 浏览

c - 将 char 设置为所有真位

我正在尝试将 char 中的所有位设置为 true。

当 foo 全为 0 时,我得到 11000111。当 foo == 00000110 时,它打印 11001111;这里出了什么问题?

0 投票
1 回答
47 浏览

java - java如何处理位运算符的结果

我想知道java如何发现按位运算的结果是-ve还是+ve?

java如何知道 1 0 1 1 是 -5 ?

为什么不直接将 o/p 作为 1 0 1 1 的十进制等效值 11 ?

它是否对每个结果都应用 2 的补码?

我看过汇编代码。它是 IAND 和 IOR 指令。

0 投票
0 回答
105 浏览

javascript - 按位或掩码产生意外的负数

我正在尝试使用 javascript 中的按位运算符来获得直觉。我想输入两个 32 位二进制文​​字,或将它们放在一起,并以二进制格式输出结果。以下面我的代码的 4 位模拟为例,我预计 0b1000 和 0b0100 的 ORing 将产生 1100。确实如此!但是,当我运行下面的程序时,我得到-1000000000000000000000000000000。我对 javascript 的了解足够多,以至于怀疑问题可能与该语言将其 64 位双精度浮点数视为 32 位块(如果我可以这样称呼它们?)我不能但是很容易将潜在的现实与下面代码的奇怪行为联系起来。有什么想法吗?

0 投票
1 回答
330 浏览

python - Python 中不支持按位异或的操作数类型

我正在使用一个生成循环冗余校验值的函数。在通过串行发送数据包之前,我似乎遇到了一些问题,因为 Python 无法确定值的十六进制表示和 ascii 表示之间的区别。我发送以下数据:

到下面的函数

现在通过这个函数的“+”字符的实际值是(正如人们所期望的那样)0x2B,但是当 Python 到达该行时

我面临以下错误

^= 不支持的操作数类型:“long”和“str”

我尝试将值转换为 chr()、hex()、int()、long() 等,但均无济于事。似乎 Python 将“+”值解释为字符或字符串。