8_4ビット演算比較サイズ

700 ワード

2つの32ビット整数aおよびbの場合、アルゴリズムは、aおよびbのうちより大きい値を返すように設計される.しかし、いかなる比較判断もできない.2つの数が同じ場合は、いずれかを返します.
2つの整数aとbを指定し、大きな数を返します.
テストサンプル:入力:1,2戻り:2
class Compare {
public:
    int flip(int n)
    {
        return n^1;
    }
    int sign(int n)
    {
        return flip((n>>31) & 1);
    }
    int getMax(int a, int b) {
        // write code here
        //    1,   0
        int as = sign(a);
        int bs = sign(b);
        int cs = sign(a-b);
        int diff_ab = as^bs; //    1,   0
        int same_ab = flip(diff_ab); //   1,   0
        int returnA = diff_ab*as + same_ab*cs;
        int returnB = flip(returnA);
        return a*returnA + b*returnB;
    }
};