简化此表达式

2 c c++ expression

a,b与不同的价值观正整数.有没有办法简化这些表达式:

bool foo(unsigned a, unsigned b)
{
    if (a % 2 == 0)
      return (b % 2) ^ (a < b); // Should I write "!=" instead of "^" ?
    else      
      return ! ( (b % 2) ^ (a < b) ); // Should I write "(b % 2) == (a < b)"? 
}
Run Code Online (Sandbox Code Playgroud)

我将返回的值解释为布尔值.

ric*_*ici 5

它有什么不同

 (a%2)^(b%2)^(a<b)
Run Code Online (Sandbox Code Playgroud)

反过来又是

 ((a^b)&1)^(a<b)
Run Code Online (Sandbox Code Playgroud)

或者,确实

 ((a ^ b) & 1) != (a < b)
Run Code Online (Sandbox Code Playgroud)

编辑添加:再考虑一下,这只是第一位和最后一位的xor (a-b)(如果你使用2的补码),所以可能有一个特定于机器的ASM序列,它更快,涉及一个旋转指令.