如何不用任何比较判断找出俩个数中较大的数

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wzc2608/article/details/81177653
#include <iostream>
using namespace std;
int flip(int n)
{
    return n ^ 1;
}
int sign(int n)
{
    return flip(n >> 31 & 1);
}
int getMax1(int a, int b)
{
    int c = a - b;
    int scA = sign(c);
    int scB = flip(scA);
    return a * scA + b * scB;
}
int getmax2(int a, int b)
{
    int c = a - b;
    int scA = sign(a);
    int scB = sign(b);
    int scC = sign(c);
    int difSab = scA ^ scB;
    int samSab = flip(difSab);
    int returnA = difSab * scA + samSab * scC;
    int returnB = flip(returnA);
    return a * returnA + b * returnB;
}
int main()
{
    int a, b;
    cin >> a >> b;
    cout << getMax1(a, b) << endl;
    cout << getmax2(a, b) << endl;
}

猜你喜欢

转载自blog.csdn.net/wzc2608/article/details/81177653
今日推荐