这个 我还想要呢! 呵呵 :lol作者: 朱烈葵 时间: 2012-7-26 20:50
n = n ^ m; //先用n记录住n^m的值
m = n ^ m; //(n^m)^m;由于一个数异或同一个数两次,结果还是本身的特点,这里n异或了m两次,所以为n还是本身n再次赋值给m
n = n ^ m; //n ^ (n ^ m);然后n在异或m而这个时候m变成了(n^m),由于那个特点,所以m就成了本身再次赋值给n
完成换位。
你是说这的原理是吗?
说实话 确实难理解。
作者: 张水荣 时间: 2012-7-26 20:54
1、异或是一个数学运算符。他应用于逻辑运算。 其运算法则为a异或b=a'b或ab'(a'为非a)。
2、例如:真异或假的结果是真,假异或真的结果也是真,真异或真的结果是假,假异或假的结果是假。就是说两个值不相同,则异或结果为真。反之,为假。
异或运算法则:
1. a ^ b ^ c = a ^ (b ^ c) = (a ^ b) ^ c;
2. d = a ^ b ^ c 可以推出 a = d ^ b ^ c.
3、在计算机应用中,普遍运用,异或的逻辑符号 ^ (Shift + 6).形象表示为:
真^假=真
假^真=真
假^假=假
真^真=假
或者为:
True ^ False = True
False ^ True = True
False ^ False = False
True ^ True = False作者: 杨志 时间: 2012-7-26 21:57
这里有多种方法!
包括利用临时变量一共有四种吧!
/*********************/
利用临时变量。t为临时变量(最常用)
t = a ;a = b; b = t;
/*********************/
利用异或运算的方式。
a = a^b;
b = a ^b;
a = a ^b;
/*************/
不通过变量,直接运算(加法)
a= a +b;
a = a - b;
b = a - b;
/************/
不通过变量,直接运算(减法)
a = a - b;
b = a + b;
a = b - a ;
以上一共四种方法可以实现两个数的置换方式。
当然其实在工作中,第一种方式是运用最多的。也是最常用的。
虽然耗一点点的内存,但其实这根本不算什么。
而第二种方式则运算效率较慢。
后面两种个人认为有点复杂。 作者: 张水荣 时间: 2012-7-27 14:07