a^=b;b^=a;a^=b;是什么意思啊?

inta=1500;//任意の数値intb=100;//任意の数値求最大公约数... int a = 1500; //任意の数値
int b = 100; //任意の数値
求最大公约数
展开
 我来答
百度网友9f268f3
推荐于2017-09-30 · TA获得超过477个赞
知道小有建树答主
回答量:167
采纳率:50%
帮助的人:117万
展开全部
a^=b等价于a = a^b,其中^是位异或运算,即将a与b的对应位进行异或运算,同为0或者同为1时,对应位结果为0;否则为1。
比如,假设,a的值为二进制的1010,b的值为二进制的1100,那么a^b = 0110
bingocoiner
2020-06-01
知道答主
回答量:9
采纳率:0%
帮助的人:2.2万
展开全部
首先 ^是位异或运算,对应的二进制位同为0或同为1 结果为0 。
比如 a = 2 b =1 对应的二进制为a = 10 b=01 ,^异或操作
所以 a^=b 即 a= a^b 也就是 10^01 = 11 a变成11
b^=a 即 b=b^a 也就是 01^11= 10 b变成 10
a^=b 即 a=a^b 也就是 11^10 = 01 a变为01
a和b完成交换。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友329f036e3
2010-05-31 · 超过31用户采纳过TA的回答
知道答主
回答量:50
采纳率:0%
帮助的人:0
展开全部
#include<stdio.h>

int GCD(int a,int b)//求a,b最大公约数,要求a>=b,不满足交换a,b就可以
{
//欧几里得求最大公约数
if(b==0)return a;
return GCD(b,a%b);
}

void Swap(int &a,int &b)//交换a,b值
{
//一个整形数异或同一个数字偶次数的值不变
a^=b;
b^=a;
a^=b;
}

int main()
{
int a,b;
puts("Please input a and b:");
scanf("%d%d",&a,&b);
if(a<b)Swap(a,b);
printf("%d and %d 的最大公约数为:%d\n",a,b,GCD(a,b));
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
niinor
2010-05-31 · TA获得超过2246个赞
知道小有建树答主
回答量:2047
采纳率:0%
帮助的人:1446万
展开全部
这3行的代码意思就是交换a,b的值
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式