比較兩個數的大小,要求不能用if,,?

1.去平均值法:

int Max(int a, int b)
{
	return (a+b+abs(a-b))/2;
	//如果返回小者:
	//return (a+b-abs(a-b))/2;
}

2.移位法

int Max(int a, int b)
{
	int result[2] = {a,b};  //移位法只需判斷a-b的符號位即可,用數組來存,高明!
	int flag = ((a-b)>>31) & 0x1;
	return result[flag];
}

int Max(int a, int b)
{
	int flag = ((a-b)>>31) & 0x1;
	return a - (a-b)*flag;  //運用flag是否爲0來進行加減,高明!
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章