<分区>
如果 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 为负数,由于溢出,这将不起作用。如何在不使用条件语句的情况下解决这个溢出问题?