黑马程序员技术交流社区
标题:
关于交换变量
[打印本页]
作者:
何建华
时间:
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