关于利用异或操作来交换两个数值的方法
2014-11-16 21:45
351 查看
void inplace_swap (int *x, int *y)
{
*x = *x ^ *y; //step 1
*y = *x ^ *y; //step 2
*x = *x ^ *y; //step 3
}
理解:
*x = *x ^ *y; //step 1
操作的意义在于将x与y的相同和相异状态保存下来。
此状态之后与这两者任意一个进行异或操作都会让它变为对方。
而x已经没了,所以要先和y发生关系,使y变为x
然后在于变为x的y发生关系,变回来存到x。
{
*x = *x ^ *y; //step 1
*y = *x ^ *y; //step 2
*x = *x ^ *y; //step 3
}
理解:
*x = *x ^ *y; //step 1
操作的意义在于将x与y的相同和相异状态保存下来。
此状态之后与这两者任意一个进行异或操作都会让它变为对方。
而x已经没了,所以要先和y发生关系,使y变为x
然后在于变为x的y发生关系,变回来存到x。
相关文章推荐
- [c语言笔记]关于指针操作中使用异或交换两个变量的值
- 【字符串操作之】返回两个数值之间的字符串。→→substring方法
- 黑马程序员--Java基础加强--14.利用反射操作泛型III【解析关于泛型类型的细节信息的获取方法】【Method与泛型相关的方法】【个人总结】
- C++中两个数值交换的几种方法
- iOS 利用运行时交换系统方法实现禁止同时点击两个按钮触发多个事件
- 程序设计中利用“按位异或”运算交换两个变量的值原理
- Java--交换两个变量的值的三种方法:借助中间量交换,数值相加减交换,位移运算交换
- 利用指针或引用进行两个数值交换
- 关于通过异或交换两个元素的值的一个陷阱
- 交换两个数值的方法,注意有【坑】,闲来无事,总结一下
- 交换两个数值的几种方法
- c语言交换两个数值的四种方法.
- java 两个数值交换的6种方法
- 两个变量交换值的方法 按位异或 快速交换两个变量。
- C语言交换两个变量数值的几种方法
- 关于交换两个整数的三种方法
- 关于交换两个变量的不用第三个变量 异或的问题
- 两个变量a,b 交换其数值的三种方法
- C语言中—— 三种方法实现两个数值交换
- wormhole-two 关于虫洞路由交换机制的两个问题和解决方法