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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李斌 中级黑马   /  2012-4-14 22:36  /  1732 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

                                
int a=3,b=4;
                a=a^b;
                b=a^b;
                a=a^b;
                System.out.println("a="+a+",b="+b);

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

7 个回复

倒序浏览
                      public static void main(String[] args)
                                int a=3,b=4;
                a=a^b;
                b=a^b;
                a=a^b;
                System.out.println("a="+a+",b="+b);
为什么老报错说 找不到符号啊? 新手 勿见笑。。
回复 使用道具 举报
没错啊  运行正常啊。。
回复 使用道具 举报
不好意思 类文件中 前面的命令没注释掉 犯了点低级错误 罪过啊。。
回复 使用道具 举报
int a=3,b=4;
    a=a^b; //a的二进制是00000011,b的二进制是00000100,则得到的a=00000111,也就是7
    b=a^b;//a=00000111,和b=00000100,得b=00000011,也就是3
    a=a^b; //a=00000111,b=b=00000011,得a=00000100,也就是4
所以最后输出的结果是a=4,b=3,希望能对你有所帮助

评分

参与人数 1技术分 +1 收起 理由
岳民喜 + 1

查看全部评分

回复 使用道具 举报

画了个图来说明一下它运算过程,画得有点乱,不过记住异或就是两个位的的值不相同时则取1,即当一个为0和一个为1时则此位取1,相同则取0。
所以最后得出a=4;b=3.

aa.jpg (87.89 KB, 下载次数: 36)

aa.jpg

评分

参与人数 1技术分 +1 收起 理由
岳民喜 + 1

查看全部评分

回复 使用道具 举报
异或:若参加运算的两个二进制位同号,则结果为0;异号则为1.即 0异或0=0,1异或0=1,1异或1=0.
a的二进制是0000 0011,b的二进制是0000 0100,那么运算后a=0000 0111.也就是a=7.
然后a的二进制是0000 0111,b不变。那么运算后b=0000 0011,也就是3.
同理,得出最后a=4..

评分

参与人数 1技术分 +1 收起 理由
岳民喜 + 1

查看全部评分

回复 使用道具 举报
public static void main(String[] args)
怎么没有{}?
把    a=a^b;
                b=a^b;
                a=a^b;
                System.out.println("a="+a+",b="+b);用{}起来。就行了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马