您现在的位置是:网站首页 -> 代码相关 文章内容
按位异或来交换两个数的原理-itarticl.cc-IT技术类文章记录&分享
发布时间: 9年前【代码相关】 121人已围观【返回】
1.异或
首先要明白3点:
1.任何数 ^ 任何数 = 0
2.任何数 ^ 0 = 任何数
3.异或满足交换率和结合律。就是 (a^b)^c = a^(b^c) = (a^c)^b
int a=A,b=B; //这里将a,b的原始值表示为 a=A,b=B
a=a^b; //将a,b的值A,B带入式子, a = a^b = A^B
b=a^b; //将a,b的值带入式子 b = a^b = (A^B) ^B = A^(B^B) = A^0 = A;
a=a^b; //将a,b的值带入式子 a = a^b = (A^B) ^A = (A^A)^B = 0^B = B;
//所以不管a,b为何值,经过上面3步,都能实现ab的交换
2.加减
int x=7,y=8;
x=x+y;
y=x-y;
x=x-y;
异或和加减这两个原理是一样的
附:C++其它位操作符
& 按位与 如果两个相应的二进制位都为1,则该位的结果值为1,否则为0
| 按位或 两个相应的二进制位中只要有一个为1,该位的结果值为1
^ 按位异或 若参加运算的两个二进制位值相同则为0,否则为1
~ 取反 ~是一元运算符,用来对一个二进制数按位取反,即将0变1,将1变0
<< 左移 用来将一个数的各二进制位全部左移N位,右补0
>> 右移 将一个数的各二进制位右移N位,移到右端的低位被舍弃,对于无符号数,高位补0
发布时间: 9年前【代码相关】121人已围观【返回】【回到顶端】
很赞哦! (1)
相关文章
点击排行

站长推荐

猜你喜欢
站点信息
- 建站时间:2016-04-01
- 文章统计:728条
- 文章评论:82条
- QQ群二维码:扫描二维码,互相交流
