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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 邢金华 黑马帝   /  2012-2-26 11:26  /  3032 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 邢金华 于 2012-2-29 10:22 编辑

看毕老师java基础视频教程第02天_15_位运算符(练习)中的,对于两个整数变量的只进行互换(不需要第三方变量)的练习时有一个注释感觉有问题。

n = n ˆm;
m = n ˆ m;  //(n ˆ m) ˆ m
n = n ˆ m; // n ˆ (n ˆ m)

红色的注释是不是应该改成  n = n ˆ m;  //(n ˆ m) ˆ n

4 个回复

倒序浏览
老师是为了 让我们看清楚 一个数异或同一个数2次结果还是这个数  而注释:n^(n^m) 跟 (n^m)^n  结果是一样的,
但 n^(n^m)显然看起来好理解点 你也可以这样写 (m^n)^n 更好
回复 使用道具 举报
^ 的效果 就像 ^(加锁)^(解锁) ,与 同一个数  就是同一个锁。 这么理解可OK?
回复 使用道具 举报
super_ln 发表于 2012-2-26 13:35
老师是为了 让我们看清楚 一个数异或同一个数2次结果还是这个数  而注释:n^(n^m) 跟 (n^m)^n  结果是一样 ...

我感觉这么写的话n = n ˆ m; // n ˆ (n ˆ m)

容易让人误以为 m 代表 n ˆ m
回复 使用道具 举报
1   n = n ˆm;
2 m = n ˆ m;  //(n ˆ m) ˆ m
3  n = n ˆ m; // n ˆ (n ˆ m)
其实你的疑惑是把变量和数学的表达式中的未知数混淆了. 2 式子中的n的值变成了 n^m ,m仍然还是不变得.3式子中的 n 已经变成了n^m, 遇到这种表达式最简单的就是 从下往上,就近原则. 即 3的表达式 右边 n^m ,就往上找 m = n^m, 那么3式子就可以写为: n = n^(n^m)你还可以追根溯源把该式子换成最初的m和n的值, 即: n =n^(n^m) =n^(n^m^m) =(n^m)^(n^m^m) = m^m^m =m;   变量可以存储变化的数据.而不像数学表达式中的未知数一样.只有一个或者几个固定的值.变量一旦变化,就回不到原来的值了.
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马