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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

就是交换两个数的值,通过异或的办法来实现,第三行注释如下,和毕老师的有一定出入。
n = n ^ m;
m = n ^ m;n ^ m )^ m
n = n ^ m;(n ^ m)^ [(n ^ m )^ m]

捕获1.PNG (18.6 KB, 下载次数: 9)

25节15:17

25节15:17

评分

参与人数 1黑马币 +1 收起 理由
杨佳名 + 1

查看全部评分

10 个回复

倒序浏览
(n ^ m )^ m不就是原来n的值么,毕老师的n^(n^m)并无错,异或完结果刚好n=m,你想一下,很容易搞通的。
回复 使用道具 举报
你想得是对的,但是当时毕老师解释了,他觉得太复杂了,用一种简单的方式来给大家讲一下。你仔细听听视频!
回复 使用道具 举报
老师说的没错啊,你仔细看看
回复 使用道具 举报
  1.                 int c = 0b00000001;
  2.                 int d = 0b00000010;
  3.                 System.out.println("c:"+Integer.toBinaryString(c)+"\td:"+Integer.toBinaryString(d));
  4.                 d = d^c;//d = 00000001^00000010 = 00000011;
  5.                 System.out.println("c:"+Integer.toBinaryString(c)+"\td:"+Integer.toBinaryString(d));
  6.                 c = d^c;//c = 00000011^00000001 = 00000010;
  7.                 System.out.println("c:"+Integer.toBinaryString(c)+"\td:"+Integer.toBinaryString(d));
  8.                 d = d^c;//d = 00000011^00000010 = 00000001;
  9.                 System.out.println("c:"+Integer.toBinaryString(c)+"\td:"+Integer.toBinaryString(d));
  10.                 /*        输出       
  11.                 c:1                d:10
  12.                 c:1                d:11
  13.                 c:10        d:11
  14.                 c:10        d:1
  15.                 */
复制代码
回复 使用道具 举报
意思意思咯,问题是没有的,只是容易引起误解!
回复 使用道具 举报
其实都没有错。毕老师的n是第二次赋值之后的n,m是初始的m;而楼主的n,m都是初始的n,m。
不知道理解的对不对。
回复 使用道具 举报
毕老师的视频时经得起推敲的,多看两遍
回复 使用道具 举报
好吧,我就稍微怀疑了一下,你懂得!
回复 使用道具 举报
苏浩 中级黑马 2014-10-22 00:22:45
10#
毕老师的说法没错。
回复 使用道具 举报
老毕的是缩写格式了,没有写的那么繁杂
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马