【刷题之路】不使用比较返回两个数中较大的值

不使用比较只能判断两个数的差的正负,使用位运算,判断符号位即可

注意若两数一正一负,可能出现相减后溢出的情况,注意判断即可

class Compare {
public:
    int getMax(int a, int b) {
        // write code here
        if(isnegitive(a) && ispositive(b)) return b;
        if(isnegitive(b) && ispositive(a)) return a;
        int c=a-b;
        if(isnegitive(c)) return b;
        else return a;
        
    }
    bool isnegitive(int num){
        return num & (1 << (sizeof(num)*8 - 1));
    }
    bool ispositive(int num){
        return !(num & (1 << (sizeof(num)*8 - 1)));
    }
};

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zyn2609530/article/details/51559074
文章标签: 刷题 算法
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

【刷题之路】不使用比较返回两个数中较大的值

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭