我的编程学习日志(9)--交换A,B值得方法(相加,异或,swap函数)

来源(CSDN博客)

From: https://blog.csdn.net/u013011866/article/details/39457293

我的编程学习日志(9)--交换A,B值得方法(相加,异或,swap函数)

2014年09月21日 22:05:25

阅读数:691

在编程中,我们经常遇到将a,b的值交换这种情况,下面就说说交换a,b的方法。

1,最常规的就是定义一个变量,通过他交换

int a=1,b=2,t;
t=a;
a=b;
b=t;


对于这种方法我们可以用宏定义,方便下次用到。

#define swap(t,a,b) {int t=a;a=b;b=t;}
main(){
	int a=1,b=2;
	swap(t,a,b);
}


2,用相加(+)和异或(^)交换。

首先是相加,这样有个缺点,a+b的值不能超过int。

int a=1,b=2;
a=a+b;
b=a-b;
a=a-b;


然后是异或,因为异或是位运算符,所以这样交换速度比较快。

int a=1,b=2;
a=a^b;
b=a^b;
a=a^b;


(大家可能不知道异或,下一篇日志会简单的说一下异或)

3,swap函数

swap函数在iostream中,所以是c++专用的,纯c用不了。

用法很简单。

#include<ioatream>
main(){
	int a=1,b=2;
	swap(a,b);
}


异或:

异或^是位运算符(位运算符进行的是二进制运算)

基本规则就是:0^1=1;0^0=0;1^1=0

一般用到异或的地方就是交换两个数的值。

如:

a=1010,b=1100;

a=a^b=0110;

b=a^b=0110^1100=1010;

a=a^b=0110^1010=1100;


版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013011866/article/details/39457293

文章标签: 位运算 异或 swap

Link: http://www.asm32.net/article_details.aspx?id=7314


浏览次数 0 发布时间 2018-05-22 00:45:24 从属分类 REFERRENCE 参考 【评论】【 】【打印】【关闭
 
| www.asm32.net | 2006版 | 资料中心 | linux | asm/asm32 | C/C++ | VC++ | java | Python | 书签 | ASP.Net书签 | 京ICP备09029108号-1