比较 位运算

来源:互联网 发布:电脑发送手机短信软件 编辑:程序博客网 时间:2024/06/07 01:34

对于两个32位整数a和b,请设计一个算法返回a和b中较大的。但是不能用任何比较判断。若两数相同,返回任意一个。

给定两个整数ab,请返回较大的数。

测试样例:
1,2
返回:2
class Compare {public:    int getMax(int a, int b) {        int c=a-b;        int temp=sign(c);        int temp2=foo(temp);        return temp*b+temp2*a;    }    int sign(int n){     //为负返回1,为正返回0。        return (n>>31)&1;//取出当前最右边的一位,就是符号    }    int foo(int n){    //n为正返回0,n为负返回1;        return n^1;    }};


原创粉丝点击