java如何用异或符号实现两个变量值的交换
在网上看到如何利用异或来实现两个变量的交换,感觉很方便,但是理解起来优点难度,做个笔记,加深理解。
首先先对异或有个了解:
相同的异或之后则为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如何用异或符号实现两个变量值的交换相关推荐
- 通过位运算进行两个变量值的交换功能
通过位运算进行两个变量值的交换功能 一般交换方法 通常的交换两个变量a,b的过程为 int temp; temp=a a=b; b=temp; 需借助上面的第3个临时变量temp. 位运算交换方法 采 ...
- JAVA 两个变量值的交换
1.使用一个中间值. public class Test01 {//两个数的值交换public static void main(String[] args) {int a =1 ;int b = 2 ...
- 【C语言】两个变量值的交换——指针
C语言中交换两个变量的值可以在主函数中直接实现,也可以通过子函数来实现.下面我们介绍用子函数实现的情况. 1.将两个变量的值作为实参直接传递,在子函数内部定义一个普通变量来对两个形参进行交换,并分别在 ...
- 不使用第三个变量,实现两个变量值的交换
static void Main(string[] args) { int a = 4, b = 5; Console.WriteLin ...
- 四种“不使用第三方变量就可以交换两个变量值”的方法
问题引入: 遇到交换变量值的问题,通常我们的做法是:定义一个新的变量,借助它完成交换. 代码如下: t = a; a = b; b = t; 在这里插入代码片 但问题的重点是"不使用第三方变 ...
- C#交换两个变量值的多种写法
在学习.Net/C#或者任何一门面向对象语言的初期,大家都写过交换两个变量值,通常是通过临时变量来实现.本篇使用多种方式实现两个变量值的交换. 假设int x =1; int y = 2;现在交换两个 ...
- c语言 交换两个变量 指针,C语言程序设计第5章“使用指针参数交换两个变量值”案例...
使用指针参数交换两个变量值"案例C主讲教师崔玲玲 5.1 " [案例说明]用函数实现两个变量值的交换使其在主调函数 和被调函数中的值一致.要求用指针变量作为函数参数.程 序运行结果 ...
- php 实现两变量值对换,PHP互换两个变量值的方法(不用第三变量)
前言 今天在这里我们就来看看,在PHP中如何在不使用第三变量的情况下,达到交换两个变量值得目的.详细的解说见代码注释,下面来一起看看吧. 一.substr() && strlen() ...
- 不借助第三个变量交换a,b两个变量值
有一道面试题,要求是 不借助第三个变量交换a,b两个变量值. 其有一种解法是通过 " 异或 " 达成目的,代码如下 #include<stdio.h>int main( ...
最新文章
- 范数介绍及C++/OpenCV/Eigen的三种实现
- 宏基因组报名倒计时!报名线上课还可免费参加线下课
- AI黑箱:我们要用AI解释AI?
- asa hacker
- GetListToJson
- OpenGL坐标系转化之投影坐标系
- OA软件实施中三个不能做的
- 【Matlab】函数输入个数不定怎么办?
- 浅谈对xmpp的理解及应用
- KDD2021 放榜,6 篇论文带你了解阿里妈妈AI技术
- 集群的可扩展性及其分布式体系结构(1)
- ERP生产线管理系统 with WAMP
- ubuntu11.04(unix 就可以了) 共享文件以及支持上传文件
- 六十秒倒计时android,如何用jquery实现六十秒倒计时
- 计算机描绘的基因结构图,推荐一款好用的基因结构图在线绘制工具!
- Python学习之学校教学(辨别身份证的真伪,并判断性别)
- CISCO路由器交换机简介及Packet+Tracer使用说明
- 使用tushare计算北上资金持仓成本
- 龙,中国,不是dragon
- 音频原始数据能量检测算法