黑马程序员技术交流社区

标题: 关于交换变量 [打印本页]

作者: 何建华    时间: 2011-11-22 15:01
标题: 关于交换变量
本帖最后由 何建华 于 2011-11-22 20:44 编辑

   刚才在网上看到一到题,不使用中间变量交换两个变量:
int b = 2;

//交换
a=a^b;

b=b^a;

a=a^b;

“^”这个符号是什么意思啊?来自哪呢?


作者: 朱勋    时间: 2011-11-22 17:54
本帖最后由 朱勋 于 2011-11-22 19:51 编辑

这是逻辑与运算,通俗的说就是"相同为1,不同为0";先转换成二进制,然后每一位进行逻辑与运算
上题如下:
x先转换成:二进制:a:0000;b:0010;  a= a ^ b;a=1101;b= a ^ b; b=0000;a=b= a ^ b; a=0010;
作者: 许前刚    时间: 2011-11-22 21:06
该方法只能针对整形变量进行操作,是异或运算符,先转换成二进制,再异或。
作者: 杨楠    时间: 2011-11-23 14:22
int i=1;int j=2;先让i=i+j,就是3.   让j=i-j,所以j变成1了。  最后让i=i-j,就是3-1,i 就等于2了~~~haha
作者: 乔克    时间: 2011-11-23 21:36
实际上是利用了a或 b本身作为了中间变量:
1. a =a + b;
    b =a - b;
    a =a - b;

2. a = a * b;
    b = a / b;
    a =a / b;

3. a = a - b;
    b = a + b;
    a = b - a;

4. a = a ^ b;
    b = a ^ b;
    a = a ^ b;





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2