特定のビットごとの演算子と他の演算子のみを使用しながら、2 つの 32 ビット整数の合計をオーバーフローなしで計算できるかどうかを判断しようとしています。したがって、整数 x と y をオーバーフローせずに加算できる場合、次のコードは 1 を返し、それ以外の場合は 0 を返します。
(((((x >> 31) + (y >> 31)) & 2) >> 1))
ただし、1 であるべきときに 0 を返し、その逆も同様です。論理 NOT (!) 演算子、またはビットごとの XOR (^) を 0x1 で使用しても、問題は解決しません。
!(((((x >> 31) + (y >> 31)) & 2) >> 1))
(((((x >> 31) + (y >> 31)) & 2) >> 1) ^ 0x1)
^これらは機能しません。
前もって感謝します。