续上篇结尾应用异或关系改变两个变量的值

在了解了异或关系后,尝试着应用异或关系在VS2017中解决上篇中改变两个整型变量的问题。

 1 #include<stdio.h>
 2 int main()
 3 {
 4     int a = 15, b = 10;
 5     printf("a=%d
", a);
 6     printf("b=%d
", b);
 7 
 8     a = a ^ b;
 9     b = a ^ b;
10     a = a ^ b;
11     printf("a=%d
", a);
12     printf("b=%d
", b);
13 
14     return 0;
15 }


在15 在二进制中为“1111”,而10 在二进制中为“1010”。而异或的意思是:相异输出1,相同输出0。所以a与b的异或为“0101”(a与b之间只有第一位和第三位不同)。在将a与b的异或赋值给a = a ^ b;而赋值后的a 在与b 异或时时原来a的值,将原来a的值赋予b,这样一来现在的b中就是原来的a的值。而将原来b的值赋予a也是这样的。

        感想:异或关系的使用确实比之前的加减法要更为安全,不会存在超出的情况,而比起新建变量的的方法也要简单一点,但这种方法的使用是在对二进制的掌握有一定的基础的情况下实现的,而新建变量的适用范围更加的广泛。

原文地址:https://www.cnblogs.com/cuckoo-/p/10055406.html