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

原创 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;

Java笔记:位运算之异或交换数值原理

在学习任何语言时,都会提及到一种容易被大家忽视的运算方法–>位运算       在java中,由于JVM机制的存在,使得位运算存在感更加低,并且,为了程序的可读性,也有程序员不愿意使用位运算进行操作...
  • Vlicet
  • Vlicet
  • 2017年06月05日 21:59
  • 208

异或“∧”运算的作用

异或运算法则:相同为0,不同为1 异或运算符∧也称XOR运算符。 它的规则是若参加运算的两个二进位同号,则结果为0(假);异号则为1(真)。 即0∧0=0,0∧1=1,1...
  • jiangqin115
  • jiangqin115
  • 2015年03月06日 16:14
  • 1195

位运算-加法运算、交换两个数值

前面的引言部分是写在前面的胡说八道,了解题目的话可以直接跳过此部分查看正文。引言这个问题的来源是http://www.lintcode.com/上的编号第一的面试题目,涉及到二进制位运算,很有意思。并...
  • surp2011
  • surp2011
  • 2016年04月14日 10:52
  • 1520

基于异或(^)运算进行数值交换的可行性分析

基于异或运算可以不用牺牲空间就完成两个变量数值交换的操作。而在编程实践中一般都会用到第三空间来保存变量,使变量在交换过程中不至于数值改变,在此统称之为信息丢失。为什么异或运算可以不借用第三空间但不造成...
  • jingmingblog
  • jingmingblog
  • 2006年05月29日 22:52
  • 972

位与&,位或|,位异或^运算,以及运用场景

一.按位与运算符 参加运算的两个数据,按二进制位进行位与运算.           例如:3&5          先将两个数据转化为二进制数,然后按位进行与运算,同为1结果为1,其它情况结...
  • m0_37602175
  • m0_37602175
  • 2017年06月01日 20:05
  • 531

异或运算的作用

参与运算的两个值,如果两个相应bit位相同,则结果为0,否则为1。 即:    0^0 = 0,        1^0 = 1,        0^1 = 1,        1^1 = 0...
  • gtkknd
  • gtkknd
  • 2016年10月12日 16:39
  • 4804

异或操作实现两数值交换和其中的bug

· 异或操作           在进行两个数值交换的时候一般有两个选择: 1) 中间变量 ;  2) 坐标系 。除此之外,还可以使用异或操作         异或操作的原理是将两个数由十进制...
  • qq869348527
  • qq869348527
  • 2016年08月10日 15:53
  • 644

异或运算的性质及用途

两个数交换 不使用 void swap(int a,int b) { a=a+b; b=a-b; a=a-b; }
  • wukong412
  • wukong412
  • 2014年07月11日 11:19
  • 1582

位运算中的异或运算

位运算是非常迅速的,因为它直接对内存中的二进制数据进行操作。  按位运算除了,按位与,按位非,按位左移,按位右移,还有按位异或。 按位异或运算定义, 1 ^ 1=0 1 ^ 0=1 ...
  • feliciafay
  • feliciafay
  • 2011年10月03日 16:24
  • 15224

第三章——数值的机器运算

1:加法器——全加器再配以其他必要的逻辑电路组成       全加器:3个输入量,A B 以及低位传来的进位C;2个输出量,本位和S以及向高位的进位C 1) 串行加法器,仅一个全加器,器件少,成本...
  • huangwwu11
  • huangwwu11
  • 2012年07月11日 12:48
  • 398
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:基于异或(^)运算的数值交换运算
举报原因:
原因补充:

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