博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用按位异或运算符交换两个数,不引入第三个变量
阅读量:6114 次
发布时间:2019-06-21

本文共 543 字,大约阅读时间需要 1 分钟。

hot3.png

用按位异或运算符交换两个数,不引入第三个变量

void swap(int &a , int &b)

{

   a = a^b;

   b = a^b;

   a = a^b;

}

解这个函数,只需要知道抑或运算的一些特性:

1. 异或运算满足结合律、交换律

2. 按位异或的3个特点:

  (1) 0^0=0,0^1=1  0异或任何数=任何数
  (2) 1^0=1,1^1=0  1异或任何数=任何数取反
  (3)                   任何数异或自己=把自己置0

上面的代码可以这样展开理解:

   // 设 a =A, b = B ,  交换要达到的目标为, a = B, b = A

  a = a^b;   // a = A ^ B

b = a^b;   // 相当于 b = A ^ B ^ B; ==> b = A ^ 0; // by特点3,性质1 ==> b = A; // by特点1       // 现在 b变量持有原a变量的值A。

a = a^b;   // 相当于 a = A ^ B ^ A; ==> a = B ^ 0; // by特点3,性质1 ==> a = B; // by 特点1       // 现在 a变量持有原b变量的值B。

转载于:https://my.oschina.net/TomcatJack/blog/1823147

你可能感兴趣的文章
HRBUST 1478 最长公共子序列的最小字典序
查看>>
MySQL所有函数及操作符
查看>>
常用快捷键
查看>>
js 四舍五入函数 toFixed(),小数位数精度
查看>>
正则表达式快速入门
查看>>
perference
查看>>
log4php使用及配置
查看>>
dataGridView加行标识方法与制作
查看>>
bzoj1079[SCOI2008]着色方案
查看>>
ABI(Application Binary Interface)
查看>>
第一次Java作业
查看>>
如何知道股票里面有庄
查看>>
Thinkphp 文本编辑器
查看>>
求最大值及其下标
查看>>
多输入使用多线程
查看>>
Sql Server系列:数据库物理模式设计
查看>>
Sql Server系列:Select检索数据
查看>>
从底层谈WebGIS 原理设计与实现(一):开篇
查看>>
[Aaronyang] 写给自己的WPF4.5 笔记[1布局]
查看>>
Java中的static关键字解析
查看>>