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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

如题,我找到的两种方法如下,那么还有其他方法吗?


第一种方法:异或的方式
1,我们知道一个数异或另一个数2次,结果还是这个数。举例:2^3^3=2.这个大家明白吧,应该没问题.同样,3^2^3=2,其实我只是把顺序换了下位置,这个都不难理解.
2, 题目中不是说两个整数变量吗?那么我们就设两个整数变量.比如: int x = 2; int y = 3;现在我们就把这两个数用异或的方法进行数值换位.
3,由于我们人的思想习惯是xy的顺序,那么我们就先来换位x,于是有:
         x = x^y;//此时x=2^3.这时再算出y,于是有
         y = x^y;//相当于2^3^3=2,这时的y=2,我们完成了一个换位.于是开始换x.
        此时x^y=2^3^2=3,那么我们就把这个值赋给x,那么就是
         x = x^y;//相当于2^3^2=3.这时x=3;


第二种方法:利用数学技巧
a=a+b;
b=a-b;
a=a-b;  




评分

参与人数 1技术分 +1 收起 理由
张然龙 + 1

查看全部评分

5 个回复

倒序浏览
老毕的视频里都有啊   你这两种 就是老毕说的哪两种  第二种有局限性,数过大可能会溢出哦
回复 使用道具 举报
┣┫流枫 发表于 2014-8-8 13:47
老毕的视频里都有啊   你这两种 就是老毕说的哪两种  第二种有局限性,数过大可能会溢出哦 ...

是啊,那么还有其他方法吗?
回复 使用道具 举报
int x = 5;
int y = 6;
x = y + ( 0*(y =x));
回复 使用道具 举报
除了视频里有的,其他的还有吗
回复 使用道具 举报
这种怎样? 很爽的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马