问题标签 [boolean-operations]

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 投票
2 回答
10199 浏览

binary - 用按位运算替换最低有效位

用提供的位替换字节的最低有效位的最佳方法是什么?

我知道如何检查和比较最后一位(例如使用 posix ffs() 函数),但我想知道是否有性能更好的解决方案,而不检查替换位是 0 还是 1。

该示例是用 python 作为伪代码编写的,但我将在 C 中实现工作算法:

显然 operator 可以是一组操作,但我正在寻找最佳(最快)的方法。

0 投票
5 回答
693 浏览

c# - C# 中是否有模式或方法来检查 (int 1,2,4,8,...) 选项是真还是假

我喜欢编写枚举或整数来将选项传递给我的方法。C# 中是否有模式或方法来检查 (int 1,2,4,8,...) 选项是真还是假。我认为通过二进制函数应该很容易实现。

编辑

我是否限制了可以像这样创建的选项数量?

0 投票
8 回答
193 浏览

c++ - 运营商业绩| 与运营商+

| 之间有什么重大区别吗?和 + 从长远来看会影响代码的性能吗?还是都是 O(1)?我正在使用的代码是这样的:

该代码将被多次使用,所以我想尽可能加快它的速度。

0 投票
11 回答
86338 浏览

c# - 条件异或?

为什么 C# 没有条件XOR运算符?

例子:

0 投票
3 回答
326868 浏览

r - 布尔运算符 && 和 ||

根据R语言的定义&,和&&(对应的|和)的区别在于||前者是向量化的,而后者不是。

根据帮助文本,我读到了类似于“And”和“AndAlso”(相应地“Or”和“OrElse”)之间的区别......意思是:如果不是所有的评估都必须是(即如果 A 为真,则 A 或 B 或 C 始终为真,因此停止评估 A 是否为真)

有人可以在这里阐明吗?此外,R 中是否有 AndAlso 和 OrElse?

0 投票
4 回答
63553 浏览

c# - C# 中是否有 XNOR(逻辑双条件)运算符?

我是 C# 新手,找不到XNOR运算符来提供这个真值表:

有专门的运营商吗?或者我需要使用!(A^B)?

0 投票
5 回答
1387 浏览

arrays - 查找与布尔查询匹配的大型 int 数组的子集的算法

假设我有一个由 M 32 位整数组成的大型数组,其中每个值的设置不超过 N 位。现在我想返回与查询 Target AND Value == Target 匹配的子集,即目标位出现在数组值中的值。

蛮力很容易,只需迭代数组并提取 target&value == target 的位置。如果 M 变得非常大,这将变得太慢。任何人都知道如何将数组转换为更适合搜索的数据结构?

一种方法是为每个位存储数组或值(因此对于 32 位数组,您需要其中的 32 个),然后仅搜索与目标值中的每个位匹配的值。除非 N 接近 32 或目标设置了接近 N 位,否则这会有所帮助。由于我正在寻找的本质上是部分匹配,因此散列或排序似乎没有帮助。

要求准确的结果。这必须在不访问并行硬件(如 GPU 或使用 SIMD)的情况下工作。

我将使用 C++,但只是一些指向算法或想法的指针就可以了。最可能的情况是 M=100000 和 N=8 并且被频繁调用。

重申一下:我需要部分匹配(如 item = 011000 匹配目标 = 001000)而不是完全匹配。尽管 M 项是提前知道的,但目标的可能值可以是任何值。

我最终决定坚持使用蛮力。对于 80,000 个项目,不值得做任何其他事情。我想如果数据集的大小更像 800,000,000,那可能是值得的。

0 投票
4 回答
271 浏览

c++ - C++ 中的“|=”运算符

我有一个关于 C++ 中“|=”的问题,这个运算符是如何工作的,例如:

上面调用的函数,如果在函数中处理了参数sig,则返回“true”,否则返回“false”;

每次只能在一个函数中处理 sig,“ |=”是如何工作的?

0 投票
2 回答
694 浏览

c# - C#中烦人的演员表

我一直在用 C# 编写一个相当低级的应用程序,它使用大量字节短和位操作。我注意到的一件事是 C# 不喜欢进行位操作并在除 int 之外的任何东西上使用布尔运算符。这导致我的代码中有 100 次强制转换。诸如“无法将类型'int'隐式转换为'ushort'之类的错误。存在显式转换(您是否缺少强制转换?)”

这迫使我在任何地方都使用演员表。

这最多应该是一个警告。即使 b1 和 b2 是 ushort 类型,它仍然是一个错误。即使是加法之类的基本算术也会产生相同的错误。

无论如何,还是我只需要接受这样一个事实,即在使用除整数以外的任何东西时,强制转换只是 C# 生活的一部分,或者只是在这不是问题的情况下使用 C++。

0 投票
1 回答
8982 浏览

c++ - 用 XOR 在括号前移出

如果我有类似 的产品总和z*a + z*b + z*c + ... + z*y,则可以将z相同的因子移出括号:z(a + b + c + ... y)

我想知道如果使用按位异或而不是乘法 ,如何(如果是的话)做同样的技巧。z^a + z^b + ... z^y -> z^(a + b + ... + y)

也许a, b, c ...应该在添加之前进行预处理,例如逻辑否定或其他?z可能会改变,所以如果需要的话,预处理不应该依赖于特定的z值。