应用k次后“取消”的位运算符

3

XOR 是一种运算符,经过两次应用后会“抵消”,意味着对于任何xx ^ x = 0

是否可能设计一个位运算符$(也许通过以某种方式组合 XOR / AND / OR / NOT?),使得对于任何xx $ x $ ... $ x (总共有 k 个 x)的值为 0?


2
你是在谈论 x 的整数值吗?$ 运算符是否仅限于按位操作?k 是一个给定的固定常数吗?对于非零的 x 和小于 k 的任意数量的应用,x $ x ... $ x 的值是否必须为非零? - Ted Hopp
1
这个假设运算符的实际用途是什么?如果这只是一个理论练习,那么它并不是一个真正的实际编程问题。(话虽如此:由XOR、AND、OR和NOT组成的可能运算符只有16种。你可以使用暴力方法解决问题。) - Raymond Chen
异或运算不是“应用两次后就被取消”。只有在应用偶数次后才会被取消。 - phuclv
3
无论怎样划分,一个比特只有两个状态。因此,除非有一些外部状态,否则不可能存在大于两的周期长度。如果你准备处理比特组,那么你可以做到一些事情,但这将不再是按位运算了。 - rici
有趣的事实:ORNOT足以构建任何逻辑运算符(请参见Minecraft或基本逻辑,无论您喜欢哪个)。还有一堆其他运算符组可以做到这一点。对于任何xx AND NOT x都相当可靠地为0。可能性是无限的。您甚至可以尝试从旋转和异或中组合出足够长度的序列来将其归零,尽管这已经有点棘手了。基本上选项是无限的。 - user4668606
2个回答

0

是的,例如如果 $ 运算符被定义为对于任何 x 或 y,x $ y = 0,那么它将具有您描述的属性。


0
这个怎么样?
(x1 ^ x2) | (x1 ^ x3) | (x1 ^ x4) | ... | (x1 ^ xk)

只有当所有的x都相同时,它才会返回0。或者更简单地将$替换为==x == x == x ...如果允许的话......在数学上有效,但在Java中不起作用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接