在网上看到如何利用异或来实现两个变量的交换,感觉很方便,但是理解起来优点难度,做个笔记,加深理解。

首先先对异或有个了解:
相同的异或之后则为0,不相同的则为1。

a:1000 1010,
b:1000 1101
a=a^b 这个式子的返回值是a与b相同与不相同的标志。
上面的运算结果是: 0000 0111

再看第二个式子:
b = a^b 由于此时的a不是代表原来的a,此时是标志而已,这个标志与b做异或运算,若a第i位为0,则新的b的i位则与右边的(原来的)b,是相同的,而由第一个式子可知,若第i位为0,则原来的a与原来的b是相同的,由相等的传递性可知新得到的b的第i位与原来的a是一致的。
这只是一方面,一个数里面肯定有1又有0,当第i位为1的时候,说明新得到的b的第i位与原来的b的第i位是相反的,同样的思路,类比的第一个式子,当第i位为1的时候,则说明原a与原b在第i位是不同的,此时对于b来说,敌人的敌人就是我的朋友,所以它也是和原来的b是相同的,这样,新得到的b就是原来的a了。

上面(第二个)将a的值赋给了b,那么如何将b的值赋值给a呢
使用同样的式子
a = a^b 注意此时的a还是代表标志位,而此时的b则代表a了,上面的b与标志位相与得到a,则可想而知,a与标志位相与则会得到b,很容易理解。

java如何用异或符号实现两个变量值的交换相关推荐

  1. 通过位运算进行两个变量值的交换功能

    通过位运算进行两个变量值的交换功能 一般交换方法 通常的交换两个变量a,b的过程为 int temp; temp=a a=b; b=temp; 需借助上面的第3个临时变量temp. 位运算交换方法 采 ...

  2. JAVA 两个变量值的交换

    1.使用一个中间值. public class Test01 {//两个数的值交换public static void main(String[] args) {int a =1 ;int b = 2 ...

  3. 【C语言】两个变量值的交换——指针

    C语言中交换两个变量的值可以在主函数中直接实现,也可以通过子函数来实现.下面我们介绍用子函数实现的情况. 1.将两个变量的值作为实参直接传递,在子函数内部定义一个普通变量来对两个形参进行交换,并分别在 ...

  4. 不使用第三个变量,实现两个变量值的交换

    static void Main(string[] args)         {             int a = 4, b = 5;             Console.WriteLin ...

  5. 四种“不使用第三方变量就可以交换两个变量值”的方法

    问题引入: 遇到交换变量值的问题,通常我们的做法是:定义一个新的变量,借助它完成交换. 代码如下: t = a; a = b; b = t; 在这里插入代码片 但问题的重点是"不使用第三方变 ...

  6. C#交换两个变量值的多种写法

    在学习.Net/C#或者任何一门面向对象语言的初期,大家都写过交换两个变量值,通常是通过临时变量来实现.本篇使用多种方式实现两个变量值的交换. 假设int x =1; int y = 2;现在交换两个 ...

  7. c语言 交换两个变量 指针,C语言程序设计第5章“使用指针参数交换两个变量值”案例...

    使用指针参数交换两个变量值"案例C主讲教师崔玲玲 5.1 " [案例说明]用函数实现两个变量值的交换使其在主调函数 和被调函数中的值一致.要求用指针变量作为函数参数.程 序运行结果 ...

  8. php 实现两变量值对换,PHP互换两个变量值的方法(不用第三变量)

    前言 今天在这里我们就来看看,在PHP中如何在不使用第三变量的情况下,达到交换两个变量值得目的.详细的解说见代码注释,下面来一起看看吧. 一.substr() && strlen() ...

  9. 不借助第三个变量交换a,b两个变量值

    有一道面试题,要求是 不借助第三个变量交换a,b两个变量值. 其有一种解法是通过 " 异或 " 达成目的,代码如下 #include<stdio.h>int main( ...

最新文章

  1. 范数介绍及C++/OpenCV/Eigen的三种实现
  2. 宏基因组报名倒计时!报名线上课还可免费参加线下课
  3. AI黑箱:我们要用AI解释AI?
  4. asa hacker
  5. GetListToJson
  6. OpenGL坐标系转化之投影坐标系
  7. OA软件实施中三个不能做的
  8. 【Matlab】函数输入个数不定怎么办?
  9. 浅谈对xmpp的理解及应用
  10. KDD2021 放榜,6 篇论文带你了解阿里妈妈AI技术
  11. 集群的可扩展性及其分布式体系结构(1)
  12. ERP生产线管理系统 with WAMP
  13. ubuntu11.04(unix 就可以了) 共享文件以及支持上传文件
  14. 六十秒倒计时android,如何用jquery实现六十秒倒计时
  15. 计算机描绘的基因结构图,推荐一款好用的基因结构图在线绘制工具!
  16. Python学习之学校教学(辨别身份证的真伪,并判断性别)
  17. CISCO路由器交换机简介及Packet+Tracer使用说明
  18. 使用tushare计算北上资金持仓成本
  19. 龙,中国,不是dragon
  20. 音频原始数据能量检测算法

热门文章

  1. Python中的numpy.append()
  2. Android中的NavigationView
  3. Android ProgressDialog示例
  4. Android通知,PendingIntent示例
  5. knn约会_出色的在线约会预订系统应具备的5个功能
  6. jquery 图像滑块_jQuery缩略图图像滑块– CSS,JavaScript
  7. 开课吧:深入了解C++语言应用方向有哪些?
  8. Java基础篇:文件如何读写?
  9. svn添加提交备注限制和自动发布web项目
  10. javascript的compile()函数使用