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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© WElife 中级黑马   /  2015-7-2 18:59  /  684 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  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什么意思 看不懂

评分

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

查看全部评分

11 个回复

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

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

我之前也觉得c是多余的 可能笔记上不小心写错了
谢谢大神啦
回复 使用道具 举报
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:08
10#
记住一个结论:一个数与另一个数异或两次,那么得到的还是还是以前那个数,这道题的意思是在不通过第三方变量的情况下实现两个数位置的交换。
回复 使用道具 举报
赞一楼的
回复 使用道具 举报
因为他直接套用了上一个程序的前面部分,你可以看下这个程序之前的那个程序是用了第三变量的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马