首页 > 代码库 > 数值交换

数值交换

实例十四:数值交换

显然,实现数值交换的方法有很多,在此列举三种进行对比:

方法一:利用第三变量进行交换
定义:a,b,temp
{
  temp=a
  b=a
  b=temp
}

方法二:不利用第三变量
  a,b
{
  a=a+b
  b=a-b
  a=a-b
}


方法三:利用位操作符,逻辑与方法二类似
a,b
{
  a=a^b
  b=a^b    等价于  b=(a^b)^b
  a=a^b    等价于  a=(a^b)^(a^b)
}

{
  a ^= b;
  b ^= a;
  a ^= b;
}

方法一和方法二 用数字代入就可以明白了,故不加以解释。


方法三解释:

为了看得清晰,使用三个变量
   a=3,b=4,c
a     0000 0011 --3
b     0000 0100 --4

c=a^b   0000 0111 --7

b=c^b   0000 0011 --3
a=c^b   0000 0100 --4

 

代码:

int _tmain(int argc, _TCHAR* argv[])
{
  int a, b;

  cout << "请输入要进行交换的两个数值:";
  cin >> a >> b;

  a ^= b;
  b ^= a;
  a ^= b;

  cout << endl << "结果为:";
  cout << a << " " << b;

  system("pause");
  return 0;
};

 

数值交换