问题标签 [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.
binary - 用按位运算替换最低有效位
用提供的位替换字节的最低有效位的最佳方法是什么?
我知道如何检查和比较最后一位(例如使用 posix ffs() 函数),但我想知道是否有性能更好的解决方案,而不检查替换位是 0 还是 1。
该示例是用 python 作为伪代码编写的,但我将在 C 中实现工作算法:
显然 operator 可以是一组操作,但我正在寻找最佳(最快)的方法。
c# - C# 中是否有模式或方法来检查 (int 1,2,4,8,...) 选项是真还是假
我喜欢编写枚举或整数来将选项传递给我的方法。C# 中是否有模式或方法来检查 (int 1,2,4,8,...) 选项是真还是假。我认为通过二进制函数应该很容易实现。
编辑
我是否限制了可以像这样创建的选项数量?
c++ - 运营商业绩| 与运营商+
| 之间有什么重大区别吗?和 + 从长远来看会影响代码的性能吗?还是都是 O(1)?我正在使用的代码是这样的:
该代码将被多次使用,所以我想尽可能加快它的速度。
c# - 条件异或?
为什么 C# 没有条件XOR
运算符?
例子:
c# - C# 中是否有 XNOR(逻辑双条件)运算符?
我是 C# 新手,找不到XNOR运算符来提供这个真值表:
有专门的运营商吗?或者我需要使用!(A^B)?
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,那可能是值得的。
c++ - C++ 中的“|=”运算符
我有一个关于 C++ 中“|=”的问题,这个运算符是如何工作的,例如:
上面调用的函数,如果在函数中处理了参数sig,则返回“true”,否则返回“false”;
每次只能在一个函数中处理 sig,“ |=
”是如何工作的?
c# - C#中烦人的演员表
我一直在用 C# 编写一个相当低级的应用程序,它使用大量字节短和位操作。我注意到的一件事是 C# 不喜欢进行位操作并在除 int 之外的任何东西上使用布尔运算符。这导致我的代码中有 100 次强制转换。诸如“无法将类型'int'隐式转换为'ushort'之类的错误。存在显式转换(您是否缺少强制转换?)”
这迫使我在任何地方都使用演员表。
这最多应该是一个警告。即使 b1 和 b2 是 ushort 类型,它仍然是一个错误。即使是加法之类的基本算术也会产生相同的错误。
无论如何,还是我只需要接受这样一个事实,即在使用除整数以外的任何东西时,强制转换只是 C# 生活的一部分,或者只是在这不是问题的情况下使用 C++。
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
值。