比较两个数的大小,交换两个数的 方法总结
2013-08-27 19:14
232 查看
面试宝典中看到的,记录下来,与大家共勉
1、比较两个数的大小
分析:方法1很好理解,在此不再详述。
方法2,首先对a,b作差,那么c可能为正数也可能为负数。对于负数将c用二进制表示最高位为1,无论c的补码形式是怎样的,它的最高位是1是一定的,那么对于整型数,右移31位(因为int类型在内存中占32位),最后使得c=1。对于c是正数的情况类似,最后c=0
2、交换两个数
定义 int a,b
方法1:借助变量
temp = a;
a =b;
b = temp;
方法2:借助算术运算
a = a + b;
b = a - b;
a = a - b;
方法3:借助位运算
a = a ^ b;
b = a ^ b;
a = a ^ b;
1、比较两个数的大小
/*比较两个数的大小,不要使用if判断*/ #include <stdio.h> #include <math.h> int main() { int a, b; printf("please input a and b:\n"); scanf("%d%d",&a,&b); //方法1 int max = ((a + b) + abs(a - b))/2; printf("the max between %d and %d is:%d\n", a, b, max); //方法2 int c = a - b; char *str[2] = {"larger a", "larger b"}; c = (unsigned)c >> (sizeof(int) * 8 - 1);//c的取值为0或者1,c=0说明a>b,c=1说明a<b。 printf("%s\n",str[c]); return 0; }
分析:方法1很好理解,在此不再详述。
方法2,首先对a,b作差,那么c可能为正数也可能为负数。对于负数将c用二进制表示最高位为1,无论c的补码形式是怎样的,它的最高位是1是一定的,那么对于整型数,右移31位(因为int类型在内存中占32位),最后使得c=1。对于c是正数的情况类似,最后c=0
2、交换两个数
定义 int a,b
方法1:借助变量
temp = a;
a =b;
b = temp;
方法2:借助算术运算
a = a + b;
b = a - b;
a = a - b;
方法3:借助位运算
a = a ^ b;
b = a ^ b;
a = a ^ b;
相关文章推荐
- 交换两个数的方法总结
- 交换两个数方法总结
- 交换两个数的方法总结
- 比较两个数大小并返回(不许使用内置方法或者排序)
- 比较两个数的大小,自定义比较两个整数的大小的方法
- 5.编写一个程序,有两个类,其中类MAX中具有两个方法,方法名都是max,一个方法能够比较两个数的大小,另外一个方法能够比较三个数的大小。在另外一个类中创建对象,调用这两个方法,分别输出两组数:2、6
- 比较两个数大小的各种方法
- mysql中日期比较大小方法详解
- ASP.NET中网页间传递参数用什么方法比较与总结
- 交换两个数的几种方法
- (转)C#里面比较时间大小三种方法
- C#里面比较时间大小三种方法
- 位运算和关于两个数交换的多种方法
- objective-c 编程总结(第六篇)运行时操作 - 方法交换
- C++中类的大小计算方法总结《网络+总结》
- Java 中的"=="和equals()方法比较总结。
- 判断闰年,用三种不同的方法交换两个数的值
- 交换两个值的方法总结c++代码
- 交换两个数的值Swap的一些方法及其源代码实现
- 脚本乐园 shell 中对小数进行比较的方法总结