2つの整数の大きい方の値を見つけるための演算子を決定するために、比較を行う必要はありません。

2つの整数の大きい方の値を見つけるための演算子を決定するために、比較を行う必要はありません。

タイトル説明

2つの32ビット整数aとbが与えられた場合、aとbの大きい方を返し、比較および判断演算子を必要としません。

説明を入力してください:

2つの整数aとbを入力します。aとbはどちらも32ビットの整数です。

出力の説明:

2つの数値のうち大きい方の整数を出力します。

例1
入る
1 0
出力
1

回答:

2つの数値の大きい方を見つけるために、それらを比較する必要はありません。次に、それらの違いを検討します。c= a-bであり、その符号ビットはsc =(c >> 31)&1であり、cが正の場合、scは0です。 cが負で、scが1の場合、次の式を使用できます。a-c* scは最終結果を表します。

コード:
#include <cstdio>

using namespace std;

int main(void) {
    
    
    int a, b;
    scanf("%d%d", &a, &b);
    int c = (( a-b ) >> 31) & 1;
    return 0 * printf( "%d\n", a-(a-b)*c );
}

おすすめ

転載: blog.csdn.net/MIC10086/article/details/109072991