不使用大于、小于逻辑判断来得到两个数的大小
2013-04-18 17:48
387 查看
//题目: 不使用大于、小于逻辑判断来得到两个数的大小 #include<cstdio> #include<iostream> using namespace std; //方法一: template <class T> T max1(T a,T b) { return ((a+b)+(a-b>=0?a-b:b-a))>>1; } /******************************************* 程序分析: max=((a+b)+abs(a-b))/2; if(a>b) abs(a-b)=a-b; max=a+b+a-b/2=a; if(a<b) abx(a-b)=b-z; max=a+b+b-a/2=b; ********************************************/ //方法二: void max2(int a,int b) { char *str[2]={" first parameter bigger "," second parameter bigger "}; int c=a-b; c=(unsigned)c>>(sizeof(int)*8-1); puts(str[c]); } /******************************************* 程序分析: 两数相减得到正数第一个数大,并且相减结果最高位为0 两数相减得到正数第二个数大,并且相减结果最高位为1 局限性:有符号数大小比较 ********************************************/ int main() { cout<<"max1(3,5)= "<<max1(3,5)<<endl; max2(999,3); }
相关文章推荐
- 不使用大于、小于逻辑判断来得到两个数的大小
- 不使用if switch 各种大于 小于 判断2个数的大小
- 请定义一个宏,比较两个数的a、b的大小,不能使用大于、小于、if语句
- 比较两个数a、b的大小,不能使用大于/小于、if、switch,?:等判断语句
- 比较两个数a、b的大小,不能使用大于/小于、if、switch,?:等判断语句
- 请定义一个宏,比较两个数的a、b的大小,不能使用大于、小于、if语句(转载)
- 请定义一个宏,比较两个数的a、b的大小,不能使用大于、小于、if语句
- 请定义一个宏,比较两个数的a、b的大小,不能使用大于、小于、if语句
- 请定义一个宏,比较两个数的a、b的大小,不能使用大于、小于、if语句
- 请定义一个宏,比较两个数的a、b的大小,不能使用大于、小于、if语句
- 请定义一个宏,比较两个数的a、b的大小,不能使用大于、小于、if语句
- 比较两个数的大小--不用大于小于if
- 位运算之不使用任何比较判断比较两个数大小问题
- 请定义一个宏,比较两个数a、b的大小,不能使用大于、小于、if语句。
- 不用大于、小于、if语句比较两个数的大小
- 不直接使用大于小于 比较两数大小
- 定义一个宏,比较两个数a、b的大小,不能使用大于、小于、if语句
- 请定义一个宏,比较两个数a、b的大小,不能使用大于、小于、if语句
- 请定义一个宏,比较两个数a、b的大小,不能使用大于、小于、if语句。
- 如何不使用任何判断"if","switch"等来得到两个数之间较大的数