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)"? 
}
我将返回的值解释为布尔值.
它有什么不同
 (a%2)^(b%2)^(a<b)
反过来又是
 ((a^b)&1)^(a<b)
或者,确实
 ((a ^ b) & 1) != (a < b)
编辑添加:再考虑一下,这只是第一位和最后一位的xor (a-b)(如果你使用2的补码),所以可能有一个特定于机器的ASM序列,它更快,涉及一个旋转指令.
| 归档时间: | 
 | 
| 查看次数: | 325 次 | 
| 最近记录: |