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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

class FuZhi {
        public static void main(String[] args) {
                //定义两个int类型的整数
                int a = 3, b = 4;
                System.out.println("a = " + a + "b = " + b);
                //用异或运算符交换两个数????问问这个交换的具体流程
                a = a ^ b;
                b = a ^ b;
                a = a ^ b;
                System.out.println("a = " + a + "b = " + b);
        }
}

评分

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

查看全部评分

8 个回复

倒序浏览
异或就是对两个数进行二进制操作,同一位上的两个数不一样则为1, 异或一个数两次得到的数是原来的数, 第二行的b就是a异或了两次b,得到原来的a,同理得到a就是原来的b

评分

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

查看全部评分

回复 使用道具 举报
ixiangfeng 发表于 2014-3-4 10:51
异或就是对两个数进行二进制操作,同一位上的两个数不一样则为1, 异或一个数两次得到的数是原来的数, 第 ...

谢谢了。我明白了
回复 使用道具 举报
异或是对二进制操作的,计算机先把a,b装换成二进制数,规则是,比较的位, 不同为1,相同为0。
举例:a是 00000011 b是00000100.
a^b=00000111;
00000111^b=00000011;
00000011^b=00000111;
回复 使用道具 举报
异或是对二进制操作的,计算机先把a,b装换成二进制数,规则是,比较的位, 不同为1,相同为0。
举例:a是 00000011 b是00000100.
a^b=00000111;
00000111^b=00000011;
00000011^b=00000111;

评分

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

查看全部评分

回复 使用道具 举报

class FuZhi {
        public static void main(String[] args) {
                //定义两个int类型的整数
                int a = 3, b = 4;
                System.out.println("a = " + a + "b = " + b);
                //用异或运算符交换两个数????问问这个交换的具体流程
                a = a ^ b;//a^b的值赋给a  011^100=111 (异或:相同为假,不同为真)
                System.out.println(a); //a=7
                b = a ^ b;//a^b的值赋给b  111^100=011
                System.out.println(b); //b=3
                a = a ^ b;//a^b的值赋给a  111^011=100  
                System.out.println(a); //a=4
                System.out.println("a = " + a + "b = " + b);
        }
}

评分

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

查看全部评分

回复 使用道具 举报
呵呵,死记的方法,记这个 结论 “异或一个数两次得到的数是原来的数 “
然后相互往表达式上套 ,就得结果了。。。
回复 使用道具 举报
你只要记得“a^b^b = a"就可以
回复 使用道具 举报
这个视频上讲的很详细,你多翻看翻看就明白了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马