gpt4 book ai didi

c - 使用位级和逻辑运算编写 x == y 的等价物?

转载 作者:太空宇宙 更新时间:2023-11-04 02:01:52 29 4
gpt4 key购买 nike

什么是等价于 x == y 且仅使用位级 (|,~,^,&) 和逻辑 (&&,||,!) 运算的 C 表达式?当 x 和 y 相等时返回 1,否则返回 0。

最佳答案

表达式x==y相当于 logical biconditional表达式 x<->y (评估为真当且仅当 x 和 y 是等价的)。双条件是 exclusive or 的倒数(如果 x 和 y 不相等,则计算结果为真),所以

x==y相当于

非(x XOR y)

这是

位:~(x^y)

逻辑没有XOR,所以假设x ⊕ y = (x ∨ y) ∧ !(x ∧ y)

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

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

关于c - 使用位级和逻辑运算编写 x == y 的等价物?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26396652/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com