这个问题不难,主要有两种方式实现。
1):用“加减”运算实现
int a = 100; int b = 200; a = a + b; //300 b = a - b; //100 a = a - b; //200
2):用“异或”运算实现
int a = 1; int b = 10; a = a ^ b; //0001 ^ 1010 = 1011 (11) b = a ^ b; //1011 ^ 1010 = 0001 (1) a = a ^ b; //1011 ^ 0001 = 1010 (10)
这里简单的介绍一下“异或”运算符:(这里用的便是第6条)
1. a ^ a = 0
2. a ^ b = b ^ a
3. a ^ b ^ c = a ^ (b ^ c) = (a ^ b) ^ c;
4. d = a ^ b ^ c 可以推出 a = d ^ b ^ c.
5. a ^ b ^ a = b.
6.若x是二进制数0101,y是二进制数1011
则x^y=1110
只有在两个比较的位不同时其结果是1,否则结果为0
即“
相同为0,不同为1”!
|
输入
|
运算符
|
输入
|
结果
|
|
1
|
^
|
0
|
1
|
|
1
|
^
|
1
|
0
|
|
0
|
^
|
0
|
0
|
|
0
|
^
|
1
|
1
|
有异或运算,那一定有“同或”运算:
真“同或”假的结果是假,假“同或”真的结果也是假,真“同或”真的结果是真,假“同或”假的结果是真。就是说两个值相同,则同或结果为真。反之,为假。——简称同真,异假。即,同或:相同为一,不同为零。
2. 同或符号为⊙。(圆圈内为点)
3. 同或和
异或互为非运算。
4. 同或公式:
a⊙b=ab+a'b'(a'为非a,b'为非b);
5. 同或表格(
二进制)
|
a
|
b
|
a⊙b
|
|
0
|
0
|
1
|
|
1
|
1
|
1
|
|
0
|
1
|
0
|
|
1
|
0
|
0
|
本文主要介绍了两种实现方式:一种是通过加减运算实现,另一种是使用异或运算实现。异或运算符具有独特的性质,如a^a=0, a^b=b^a等。此外,文章还解释了异或与同或运算的区别,并提供了实例说明。

2455

被折叠的 条评论
为什么被折叠?



