基于异或(^)运算的数值交换运算

原创 2006年05月29日 11:34:00

设现在有两个变量A和B

要求不通过第三空间完成变量A和B的数值交换

首先讨论一下基于第三空间的数值交换方法

int tmp;

tmp = A;

A = B;

B = tmp;

现在我们讨论不通过第三空间的数值交换方法

A = A ^ B;

B = A ^ B;

A = A ^ B;

交换图解

优化后算法如下:

A ^= B;

B ^= A;

A ^= B;

相关文章推荐

异或运算实现两个数的交换

通常的交换两个变量a,b的过程为 int temp; temp=a a=b; b=temp; 需借助上面的第3个临时变量temp. 采用下面的方...

Java中异或运算实现两个整数的交换以及其功能函数实现

今天学习到一种超酷炫的交换两个整数的方法,给各位分享一下。异或运算属于位运算的一种,首先简单介绍一下异或预算的语法规则。 假设a与b为不相等的两个整数。 (1)a^a=0; (2)a^b=0; (3)...

java异或运算交换两个数的陷阱

我们知道,用异或运算可以不用定义中间变量就可以交换两个数。如下: int a=2; int b=3; System.out.println("交换前:a="+a+" b="+b); a...
  • Mr__mao
  • Mr__mao
  • 2015年08月12日 20:43
  • 393

在不借助第三方变量情况下实现两个变量的交换(借助于异或运算)

下面首先来看一个问题。 假设存在两个int型变量a和b,那么如何实现两个变量值的交换呢。 通常我们的做法,也是最容易想到的做法就是通过定义一个第三方变量,然后借助于该变量来实现变量值的交换。 方...

异或运算实现两个数的交换

通常的交换两个变量a,b的过程为 int temp; temp=a a=b; b=temp; 需借助上面的第3个临时变量temp. 采用下面的方...

使用异或运算实现两数交换

三种方法实现两数互换

使用异或运算实现两数交换

通常我们实现两数交换需要引入第三个变量作为媒介

异或运算实现两个数的交换

通常的交换两个变量a,b的过程为 int temp; temp=a a=b; b=temp; 需借助上面的第3个临时变量temp. 采用下面的方...
  • ztk329
  • ztk329
  • 2014年11月16日 18:21
  • 147

用异或运算交换连个变量

在论坛的帖子里看到一个面试题,交换两个整数。以往知道的方法有两种,一是使用临时变量temp,二是两个整数相加减的算法。在帖子里发现了第三种算法,异或运算: a=a^b; b=b^a; a=b...

使用异或运算交换两个变量的危险

我们知道,在排序算法中经常会需要交换序列中的两个变量,常见有两种方法: 1.借助第三个临时变量 // 交换 int temp = array[i]; array[i] ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:基于异或(^)运算的数值交换运算
举报原因:
原因补充:

(最多只允许输入30个字)