黑马程序员技术交流社区
标题:
求异或运算符对数据进行交换的具体过程
[打印本页]
作者:
追逐
时间:
2014-3-4 10:46
标题:
求异或运算符对数据进行交换的具体过程
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);
}
}
作者:
ixiangfeng
时间:
2014-3-4 10:51
异或就是对两个数进行二进制操作,同一位上的两个数不一样则为1, 异或一个数两次得到的数是原来的数, 第二行的b就是a异或了两次b,得到原来的a,同理得到a就是原来的b
作者:
追逐
时间:
2014-3-4 11:02
ixiangfeng 发表于 2014-3-4 10:51
异或就是对两个数进行二进制操作,同一位上的两个数不一样则为1, 异或一个数两次得到的数是原来的数, 第 ...
谢谢了。我明白了
作者:
菠萝鱼
时间:
2014-3-4 11:04
异或是对二进制操作的,计算机先把a,b装换成二进制数,规则是,比较的位, 不同为1,相同为0。
举例:a是 00000011 b是00000100.
a^b=00000111;
00000111^b=00000011;
00000011^b=00000111;
作者:
菠萝鱼
时间:
2014-3-4 11:05
异或是对二进制操作的,计算机先把a,b装换成二进制数,规则是,比较的位, 不同为1,相同为0。
举例:a是 00000011 b是00000100.
a^b=00000111;
00000111^b=00000011;
00000011^b=00000111;
作者:
Aimer_WJY
时间:
2014-3-4 11:14
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);
}
}
作者:
何建明
时间:
2014-3-4 11:32
呵呵,死记的方法,记这个 结论 “异或一个数两次得到的数是原来的数 “
然后相互往表达式上套 ,就得结果了。。。
作者:
织语不如书
时间:
2014-3-4 15:38
你只要记得“a^b^b = a"就可以
作者:
行如止水
时间:
2014-3-4 19:00
这个视频上讲的很详细,你多翻看翻看就明白了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2