int maximum(int a, int b)
{
long k = (((long)a - (long)b) >> 63) & 1;//取符号位
return b * k + a * (k ^ 1);
}
アイデア:
二つの問題は、1は符号ビットのint型のうち、他はint型以上行う方法である方法です。
あなたは長い間見てか、int型の必要があります。符号ビットは、長い63の右の種類は、あなたが得ることができることを、最初の場所です。
一つのこと、高ビット0は正の数を残したが、高ビットマイナス1(知識のコンパイルを)左
return b * k + a * (k ^ 1)
アウトkは符号ビット、1 0は正の数であり、負です。Bが大きく、B負説明1つの+ A 0 Bは適切ではありません。、正の大きいことを示す場合、逆に、そのB 0 + 1は、Aに相当します。
ここでは非常に感謝滞在ボタンユーザーリップルを感謝します。