不用判断性语句,实现求两个整数中较大数的函数
2011-04-12 20:44
253 查看
转自:http://hi.baidu.com/todaygoodhujun/blog/item/b1be40105c94ebfcc3ce79d8.html
不用判断性语句,实现求两个整数中较大数的函数
要求:
不能使用 if、for、while、?:() 或其他任何带有判断性质的语句。不能使用内部实现有判断语句的函数。
写一个函数,max(int a, int b)返回a、b中较大的一个。不能用( abs(a+b) + abs(a-b) ) * 0.5,据说abs函数中也 使用了 if 语句。
=========http://ike.126.com
/**//**************************************************
Purpuse : Evaluate the bigger one of two integers。
Author : ALNG
Date : 2003-03-11
Original : http://search.csdn.net/Expert/topic/1515/1515035.xml
**************************************************/
// 如果 i >= 0,返回0。否则返回1。在 max() 中被调用。
inline int signof(int i)
{
return unsigned(i) >> (sizeof (int) * 8 - 1);
}
// 返回两个整型参数中数值较大的参数的值。
int max(int a, int b)
{
int p[2];
p[0] = a;
p[1] = b;
return p[signof(a - b)];
}
=====
a & b 比较大小有三种情况
a > b (这种情况下 a-b>0)
a < b (这种情况下 a-b<0)
a = b (不用说了,再说就废话连篇了)
计算机编码中(int类型的)
>0 = 0XXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX
<0 = 1XXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX
这样就有一个特点,右移31bit就会出现 0,1
如果为 0 则 a 大
如果为 1 则 b 大
=========
不用判断性语句,实现求两个整数中较大数的函数
要求:
不能使用 if、for、while、?:() 或其他任何带有判断性质的语句。不能使用内部实现有判断语句的函数。
写一个函数,max(int a, int b)返回a、b中较大的一个。不能用( abs(a+b) + abs(a-b) ) * 0.5,据说abs函数中也 使用了 if 语句。
=========http://ike.126.com
/**//**************************************************
Purpuse : Evaluate the bigger one of two integers。
Author : ALNG
Date : 2003-03-11
Original : http://search.csdn.net/Expert/topic/1515/1515035.xml
**************************************************/
// 如果 i >= 0,返回0。否则返回1。在 max() 中被调用。
inline int signof(int i)
{
return unsigned(i) >> (sizeof (int) * 8 - 1);
}
// 返回两个整型参数中数值较大的参数的值。
int max(int a, int b)
{
int p[2];
p[0] = a;
p[1] = b;
return p[signof(a - b)];
}
=====
a & b 比较大小有三种情况
a > b (这种情况下 a-b>0)
a < b (这种情况下 a-b<0)
a = b (不用说了,再说就废话连篇了)
计算机编码中(int类型的)
>0 = 0XXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX
<0 = 1XXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX
这样就有一个特点,右移31bit就会出现 0,1
如果为 0 则 a 大
如果为 1 则 b 大
=========
相关文章推荐
- [导入]不用判断性语句,实现求两个整数中较大数的函数
- 不用判断性语句,实现求两个整数中较大数的函数
- 不用判断性语句,实现求两个整数中较大数的函数
- 不用判断性语句,实现求两个整数中较大数的函数
- 不用判断语句实现两个整数的比较
- 1、使用javascript代码写出一个函数:实现传入两个整数后弹出较大的整数
- 编写函数求两个整数 a 和 b 之间的较大值。要求不能使用if, while, switch, for, ?: 以及任何的比较语句
- 编写函数求两个整数 a 和 b 之间的较大值。要求不能使用if, while, switch, for, ?: 以及任何的比较语句
- 不用判断性语句实现求两数中最大数的函数
- 不用比较运算符实现两个整数的大小比较并输出结果
- 不用”if“,”?:“,”switch“或其他判断语句,求两个数中较大的数或较小的数
- 另解,c/c++有趣的经典笔试题:不用判断语句求得两个整数的最大值
- 指针学习:指针变量作为函数参数实现交换两个整数
- 浅谈关于两个整数的交换函数的N种实现方式
- 用C语言编写函数实现一个整数计算机,程序接受三个参数,第一个参数为操作项,后两个参数为操作数。
- 调用函数求两个整数中的较大值
- 有两个变量a和b,不用if等判断语句,求两者较大的值
- 一行语句不越界实现交换两个整数
- Java中异或运算实现两个整数的交换以及其功能函数实现
- 用宏实现函数—1.写一个宏可以将一个数字的奇数位和偶数位交换 2.求两个数中求较大值