A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 何建华 黑马帝   /  2011-11-22 15:01  /  2322 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 何建华 于 2011-11-22 20:44 编辑

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

//交换
a=a^b;

b=b^a;

a=a^b;

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

评分

参与人数 1技术分 +1 收起 理由
陈涛 + 1

查看全部评分

4 个回复

倒序浏览
朱勋 黑马帝 2011-11-22 17:54:03
沙发
本帖最后由 朱勋 于 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;

评分

参与人数 1技术分 +1 收起 理由
陈涛 + 1

查看全部评分

回复 使用道具 举报
该方法只能针对整形变量进行操作,是异或运算符,先转换成二进制,再异或。

评分

参与人数 1技术分 +1 收起 理由
陈涛 + 1

查看全部评分

回复 使用道具 举报
int i=1;int j=2;先让i=i+j,就是3.   让j=i-j,所以j变成1了。  最后让i=i-j,就是3-1,i 就等于2了~~~haha

评分

参与人数 1黑马币 +1 收起 理由
陈涛 + 1

查看全部评分

回复 使用道具 举报
乔克 黑马帝 2011-11-23 21:36:24
报纸
实际上是利用了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;

评分

参与人数 1黑马币 +1 收起 理由
陈涛 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马