如果 x > y,则此函数将返回 1,否则返回 0。
到目前为止我有
int isitGreater(int x, int y) {
return (((y+((~x)+1)) >> 31) & 1);
但它不起作用。
允许的操作:合法操作:!~ & ^ | + << >>
我确定我的逻辑是正确的,如果 X - Y 我得到一个负数,这意味着 y > x ,因此第 32 位是 1,所以我将该位向右移动 31 次,然后“和”它与“1”。
编辑:如果 x 为负数,由于溢出,这不起作用。如何在不使用条件语句的情况下解决此溢出问题?