可以把第一个n^m看成一个变量,当你用它去^n就得m,当你用它去^m就得n。作者: long 时间: 2013-5-13 16:28
楼主先要理解异或操作符(^):1^0 = 1, 0^1 = 1, 0^0 = 0, 1^1 = 0 。
int变量在内存中是用32位二进制补码表示的,n = 3的二进制补码是(0...0)11, m = 8的二进制补码是(0...0)1000。
n = n ^ m; // n = (0...0)1011, m = (0...0)1000
m = n ^ m; // m = (0...0)11, n = (0...0)1011,m = 3
n = n ^ m; // n = (0...0)1000, n = 8作者: 翟宝海 时间: 2013-5-13 17:25
^又称为异或,是一个数学运算符,应用于逻辑运算:
在布尔型运算中:真^真为假、假^假为假、真^假为真、假^真为真;也就是说两个值相同为假,两个值不同为真;
在二进制值运算中:1表示真、0表示假;因此二进制值的异或运算法则为:0^0为0、1^1为0、0^1为1、1^0为1;
7^4转换为二进制就是111^100,根据上述运算法则结果为011;将该结果再与4(也就是100)进行异或运算,即011^100,所得结果为111;
在异或运算中,有一个现象:n^m^m=n;n^m^n=m,即一个数异或同一个数两次,结果还是这个数。