快速找出两个变量a,b中较大的那个变量

方法一:位运算

题解:在32位的编译器中,一个int是32位的。 由于数字在计算机中以反码表示,所以如果c的值为负值则第32位为1,于是右移31位后得到c=1,同理若c值为正,则c=0。

#include <iostream>
using namespace std;
int my_max(int x, int y)
{
    int text[2] = {x, y};
    unsigned int c;
    c = x - y;
    c >>= 31;
    return text[c];
}
int main()
{
    int a = 7, b = 11;
    cout << my_max(a, b) << endl;
    return 0;
}

方法二:绝对值法

#include <iostream>
using namespace std;
int my_min(int x, int y)
{
    return ((x+y) - abs(x-y)) / 2;
}
int my_max(int x, int y)
{
    return ((x+y) + abs(x-y)) / 2;
}
int main()
{
    int a = 7, b = 11;
    cout << "较小的数为:" << my_min(a, b) << endl;  
    cout << "较大的数为:" << my_max(a, b) << endl;
    return 0;
}
发布了79 篇原创文章 · 获赞 59 · 访问量 3622

猜你喜欢

转载自blog.csdn.net/qq_44458489/article/details/105053224
今日推荐