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 が負の場合、これは機能しません。条件ステートメントを使用せずにこのオーバーフローの問題を修正するにはどうすればよいですか?