黑马程序员技术交流社区
标题: 这算毕老师的一个小瑕疵吗?我觉得应该是如下理解 [打印本页]
作者: 绝密飞行 时间: 2014-10-20 22:59
标题: 这算毕老师的一个小瑕疵吗?我觉得应该是如下理解
就是交换两个数的值,通过异或的办法来实现,第三行注释如下,和毕老师的有一定出入。
n = n ^ m;
m = n ^ m;(n ^ m )^ m
n = n ^ m;(n ^ m)^ [(n ^ m )^ m]
-
捕获1.PNG
(18.6 KB, 下载次数: 13)
25节15:17
作者: mudao 时间: 2014-10-20 23:48
(n ^ m )^ m不就是原来n的值么,毕老师的n^(n^m)并无错,异或完结果刚好n=m,你想一下,很容易搞通的。
作者: 肖建伟 时间: 2014-10-20 23:53
你想得是对的,但是当时毕老师解释了,他觉得太复杂了,用一种简单的方式来给大家讲一下。你仔细听听视频!
作者: 田峻菘 时间: 2014-10-21 21:05
老师说的没错啊,你仔细看看
作者: 刘树弘 时间: 2014-10-21 21:38
- int c = 0b00000001;
- int d = 0b00000010;
- System.out.println("c:"+Integer.toBinaryString(c)+"\td:"+Integer.toBinaryString(d));
- d = d^c;//d = 00000001^00000010 = 00000011;
- System.out.println("c:"+Integer.toBinaryString(c)+"\td:"+Integer.toBinaryString(d));
- c = d^c;//c = 00000011^00000001 = 00000010;
- System.out.println("c:"+Integer.toBinaryString(c)+"\td:"+Integer.toBinaryString(d));
- d = d^c;//d = 00000011^00000010 = 00000001;
- System.out.println("c:"+Integer.toBinaryString(c)+"\td:"+Integer.toBinaryString(d));
- /* 输出
- c:1 d:10
- c:1 d:11
- c:10 d:11
- c:10 d:1
- */
复制代码
作者: 绝密飞行 时间: 2014-10-21 22:39
意思意思咯,问题是没有的,只是容易引起误解!
作者: 康师傅-蛋黄派 时间: 2014-10-21 22:46
其实都没有错。毕老师的n是第二次赋值之后的n,m是初始的m;而楼主的n,m都是初始的n,m。
不知道理解的对不对。
作者: 小孩别靠近 时间: 2014-10-21 22:54
毕老师的视频时经得起推敲的,多看两遍
作者: 绝密飞行 时间: 2014-10-21 23:09
好吧,我就稍微怀疑了一下,你懂得!
作者: 苏浩 时间: 2014-10-22 00:22
毕老师的说法没错。
作者: nerveva2000 时间: 2014-10-22 06:38
老毕的是缩写格式了,没有写的那么繁杂
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |