使用位写入x == y的等价物

什么是与x == y相等的C表达式,它只使用位级(|,〜,^,&)和逻辑(&&,|| ,!)操作? 当x和y相等时它应该返回1,否则返回0。


表达式x==y等价于逻辑双条件表达式x<->y (如果x和y相等,则计算结果为true)。 双条件是排他或(如果x和y不等价,则评估为真)的逆,如此

x==y等价于

NOT(x XOR y)

这是

位: ~(x^y)

逻辑不具有XOR ,因此假设x⊕y =(x∨y)∧!(x∧y)

逻辑: !((x || y) && !(x && y))

注意:上面的表达式是逻辑上的(一个更好的词可能是代数的?)等价。 按位比较当然只是看每一个比特。 正如@chux指出的那样,如果2个数字在算术上等价,但是具有不同的位模式,这可能会带来意想不到的结果。 如果您正在比较覆盖了==运算符的对象,那么在C++会出现同样的问题。 对于逻辑版本来说,如果xy不是相同的变量类型,那么可能会发生类型强制转换。

链接地址: http://www.djcxy.com/p/57571.html

上一篇: Write equivalent of x == y using bit

下一篇: Add two integers using only bitwise operators?