黑马程序员技术交流社区

标题: 关于异或的一个简单问题 [打印本页]

作者: 李斌    时间: 2012-4-14 22:36
标题: 关于异或的一个简单问题
                                
int a=3,b=4;
                a=a^b;
                b=a^b;
                a=a^b;
                System.out.println("a="+a+",b="+b);
作者: 李斌    时间: 2012-4-14 22:38
                      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);
为什么老报错说 找不到符号啊? 新手 勿见笑。。
作者: 刘占月    时间: 2012-4-14 22:45
没错啊  运行正常啊。。
作者: 李斌    时间: 2012-4-14 22:47
不好意思 类文件中 前面的命令没注释掉 犯了点低级错误 罪过啊。。
作者: 陈坚    时间: 2012-4-14 22:53
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,希望能对你有所帮助
作者: 王德南    时间: 2012-4-14 23:00

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

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

aa.jpg

作者: 徐-星星    时间: 2012-4-14 23:37
异或:若参加运算的两个二进制位同号,则结果为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..
作者: 韩新凯    时间: 2012-4-14 23:50
public static void main(String[] args)
怎么没有{}?
把    a=a^b;
                b=a^b;
                a=a^b;
                System.out.println("a="+a+",b="+b);用{}起来。就行了





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