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

int a = 1500; //任意の数値
int b = 100; //任意の数値
求最大公约数

a^=b等价于a = a^b,其中^是位异或运算,即将a与b的对应位进行异或运算,同为0或者同为1时,对应位结果为0;否则为1。
比如,假设,a的值为二进制的1010,b的值为二进制的1100,那么a^b = 0110
温馨提示:内容为网友见解,仅供参考
第1个回答  2020-06-01
首先 ^是位异或运算,对应的二进制位同为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完成交换。
第2个回答  2010-05-31
#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;
}
第3个回答  2010-05-31
这3行的代码意思就是交换a,b的值

a^=b;b^=a;a^=b;是什么意思啊?
a^=b等价于a = a^b,其中^是位异或运算,即将a与b的对应位进行异或运算,同为0或者同为1时,对应位结果为0;否则为1。比如,假设,a的值为二进制的1010,b的值为二进制的1100,那么a^b = 0110

a= a ^ b; b = a ^ b; a = a ^ b;
a=a^b,现在a存的是原始的a^b的值,为了方便表示,改用A表示,也就是A=a^b b=a^b,这里的a就是上一步中的A,也就是b=A^b=a^b^b=a,为了区分,改为B=a a=a^b,这里a,b是前面的A,B,也就是a=a^b^a=b 自此,a,b的值实现了交换 ...

c语言a=a^b; b=a^b; a=a^b 是啥意思啊??
互换a,b的值 位运算是C语言的一大特色,利用异或运算可以实现交换两个数,原理是一个整数与另外一个数进行两次异或运算仍然是其本身,基本原理用式子表达如下:(1) A ^ A = 0;(2) A = A ^B;(3) B = A ^B;(相当于B = A ^ B ^ B ,即 B = A)(4) A= A ^ B;(相当于A =...

c语言 a^=b^=a^=b是什么意思?
^是按位异或,两者真值相同则假,真值相反则真。例如a^=b是a=a^b,若a,b值均为真或者均为假,则a为假,反之,则为真。a^=b^=a^=b这是赋值的连续运算,从最右边往左算。

a^=b;是什么意思?
a^=b 就是 a=a^b a^b 是a与b按位异或

c语言程序设计题*a^=*b; *b^=*a; *a^=*b;这是一个将a,b交换的语句,但...
这是位操作符异或, 二进制的数学运算。这是一种不需要临时变量就可以交换ab的方法 你去看一下位操作

c++ a&=b a^=b 是什么意思啊
即:1 & 1 == 1,1 & 0 == 0 & 1 == 0 & 0 == 0。例如:char a,b;a=0xc5;\/*a=10100101b;*\/ b=0xdd;\/*b=11011101b;*\/ c=a&b;\/*c=10000101b*\/ 结果是c==0x85。( l18230365 错误,11111101b是位或a|b的结果。)--- [原创回答团]...

c语言中 ^=什么意思
^ 是XOR循环,就是异或 int a = 4;a ^= 3;相当于是 a = a ^ 3;是按二进制位进行异或运算,运算法则是,同则为0,不同则为1。比如 上面的 4 的二进度为 0100 3 的二进制为 0011 所以 0100 ^ 0011 = 0111 结果就是10进制 7 ...

C语言 a = a^b,其中a^b是什么意思?
a^b意思是:a与b进行异或运算。规则是:若参加运算的两个二进制位同号,则结果为0(假);异号则为1(真)。即0^0=0,0^1=1,1^0=1,1^1=0。

sql中 a*=b 或 a=*b 是什么意思?
a*=b 意思是查询时显示a表中的所有数据。如果a=b那么只显示两个表中有关联的数据

相似回答