黑马程序员技术交流社区

标题: 求大神指导 [打印本页]

作者: WElife    时间: 2015-7-2 18:59
标题: 求大神指导
  1. class OperatorDemo
  2. {
  3. public static void main(String[] args){
  4. int a = 3,b = 5;
  5. int c;
  6. System.out.println( "a = " + a + ",b = " + b );
  7. a = a ^ b;
  8. b = a ^ b;
  9. a = a ^ b;
  10. System.out.println( "a = " + a + ",b = " + b );
  11. }
  12. }
复制代码

1
int a = 3,b = 5;
int c;
为什么要加int c     
2
a = a ^ b;
b = a ^ b;
a = a ^ b什么意思 看不懂

作者: sophitia    时间: 2015-7-2 19:27
1.你确定c有应用么?
2.(^)为异或运算符,运算规则为相同为假,不同为真。(真^假=真  假^真=真  假^假=假  真^真=假)
我只以第一个例子和你解释,int a=3,那么3的二进制码为0011,int b=5,二进制码为0101,那么异或之后为
为了便于观看我就直接写2行
0011
0101
------
0110 也就是6,所以第一条语句运算后应该为a=6;
之后的请早葫芦画瓢,谢谢。
作者: keto    时间: 2015-7-2 19:29
楼上解答很详细。。。。
作者: 为了理想而奋斗    时间: 2015-7-2 19:34
不用加int c也一样可以进行互换。你试着注释这段,
作者: WElife    时间: 2015-7-2 19:37
sophitia 发表于 2015-7-2 19:27
1.你确定c有应用么?
2.(^)为异或运算符,运算规则为相同为假,不同为真。(真^假=真  假^真=真  假^假= ...

谢谢 大神 我懂了  :)
作者: home7192    时间: 2015-7-2 20:20
你写的这段程序是想使用^来交换a,b值,先打印一次原始值,后打印一次交换后的值。需要注意的是你的C确认是一点也没用。
作者: Wait_For    时间: 2015-7-2 20:22
int是数据类型! …^  是异或符号!
作者: WElife    时间: 2015-7-2 20:39
home7192 发表于 2015-7-2 20:20
你写的这段程序是想使用^来交换a,b值,先打印一次原始值,后打印一次交换后的值。需要注意的是你的C确认是一 ...

我之前也觉得c是多余的 可能笔记上不小心写错了
谢谢大神啦
作者: 东东的一些事    时间: 2015-7-2 23:53
a = a ^ b;
b = a ^ b;
a = a ^ b;   这是交换两个数据的一个方法。异或。想简单的话可以用第三方法变量来交换。int c应该是用来交换数据的变量用的。int a = 3,b = 5;  int c;   c = a ;  a = b ;  b = c ; 可以实现交换。
作者: wgy    时间: 2015-7-3 08:06
记住一个结论:一个数与另一个数异或两次,那么得到的还是还是以前那个数,这道题的意思是在不通过第三方变量的情况下实现两个数位置的交换。
作者: fantianfei    时间: 2015-7-3 09:59
赞一楼的
作者: shanshan33    时间: 2015-7-3 22:09
因为他直接套用了上一个程序的前面部分,你可以看下这个程序之前的那个程序是用了第三变量的




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