私が使っている言語はCです。
私は次のようなコードを持っています:
int sign_x=~(x>>31)+1;
int sign_y=~(y>>31)+1;
int sign=sign_x^sign_y;
return ((!sign)&(!(!(0x80000000&(y+(~x+1)))))+(sign&(!sign_x)));
入力 x=2147483647[0x7fffffff],y=-2147483648[0x80000000] を設定すると、結果は 0 になります。最初の部分が 0 で、2 番目の部分が 1 であるため、なぜ結果が 1 ではなく 0 になるのか疑問に思います。演算子「+」から「|」、結果はOKです。
誰でも私を助けることができますか?ありがとう