两个变量a,b,不用判断语句,找出两个中比较大的那个变量

Tips: 不使用if-else或者其他三目运算符等等一切判断语句。


————————我是分隔符——————————


————————我是分隔符——————————


————————我是分隔符——————————


方法一:位运算

#include 

using namespace std;

int my_max(int x,int y)
{
	int test[2]={x,y};
	unsigned int c;
	    c=x-y;
            c>>=31;
	    return test[c];
}
int main()
{
	int a=7,b=11;
	cout<

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


方法二:绝对值法

#include 
#include
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<


 
  
 
  


你可能感兴趣的:(算法,面试题)