首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

急求答案,该怎么处理

2012-07-29 
急求答案求如何用位运算,且不用第三个变量,交换两个变量的值[解决办法]比如:int a10,b5a a^bb a^b

急求答案
求如何用位运算,且不用第三个变量,交换两个变量的值

[解决办法]
比如:int a=10,b=5;
a = a^b;
b = a^b;
a = a^b;
利用了逻辑里面的与:
第一步:a1 = a^b;(a1表示新的a)
第二步:b = a1^b = (a^b)^b = a;
第三步:a = a1^b = (a^b)^a = b;
[解决办法]
是异或操作,写错了
[解决办法]
通过异或运算能实现变量的交换,请看以下代码:
int a=10,b=12; //a=1010^b=1100;
a=a^b; //a=0110^b=1100;
b=a^b; //a=0110^b=1010;
a=a^b; //a=1100=12;b=1010;
此算法能够实现是由异或运算的特点决定的,通过异或运算能够使数据中的某些位翻转,其他位不变。这就意味着任意一个数与任意一个给定的值连续异或两次,值不变。
即:a^b^b=a。将a=a^b代入b=a^b则得b=a^b^b=a;同理可以得到a=b^a^a=b;轻松完成交换。

热点排行