1.加减法
int main() {
int a = 3;
int b = 5;
a = a + b; //a=8
b = a - b; //b=8-5=3
a = a - b; //a=8-3=5
printf("a=%d,b=%d",a, b);
return 0;
}
缺点:int型占4字节,若a,b较大但都恰好占4字节,而它们的和超出4个字节,二进制数据会进位丢失,此时加减法不再适用。
2.异或法
int main() {
int a = 3; //00000000 00000000 00000000 00000011
int b = 5; //00000000 00000000 00000000 00000101
a = a^b; //00000000 00000000 00000000 00000110 创建密码
b = a^b; //00000000 00000000 00000000 00000011
a = a^b; //00000000 00000000 00000000 00000101
printf("a=%d,b=%d",a, b);
return 0;
}
先用a^b相当于先创建一个密码来存储a与b的对应二进制位是否相同的信息,1代表不同,0代表相同
根据异或的性质x^1=!x ; x^0=x
把b异或此密码就能得到a,得到a后再异或此密码就能把b的值赋给a,实现a与b的交换
标签:00000101,变量,密码,00000000,创建,第三个,int,异或,字节 From: https://blog.51cto.com/u_16102535/6373095