楼梯梯段宽度指的是:请问这个两个数交换的原理
来源:百度文库 编辑:高校问答 时间:2024/07/08 09:56:59
swap(int &a, int &b)
{
a = a ^ b;
b = a ^ b;
a = a ^ b;
}
异或好像是基于位的
你们都讲是基于整数的
在深的原理请告知。
谢谢
{
a = a ^ b;
b = a ^ b;
a = a ^ b;
}
异或好像是基于位的
你们都讲是基于整数的
在深的原理请告知。
谢谢
a = a^b a和b异或的值存入a
b = a^b 这个时候相当于 b=(a^b)^b a 两次异或,相当于自己.
a = a^b 相当于 a = (a^b)^a b两次异或,相当于自己
ab互换了呵呵~
呵呵!^异或
这里的关键是下面的两个性质
1)一个数字和自己的异或的结果是0x0
2)一个数字和0x0异或的结果还是这个数字
下面就是这个的算法:
int swap2(int & a,int & b)
{
a=a^b; // 此时a中已经包含b的“影子”了,同时也有a自己的“影子”
b=a^b; // b和a中自己的“影子”抵消了,所以此时b就是a的初值
a=a^b; // a中a的影子和b(就是a的初始值)抵消,此时a中包含的b的“影子”成为了a的新的值
}