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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Tim-killer 初级黑马   /  2016-4-20 00:51  /  591 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 Tim-killer 于 2016-4-20 00:58 编辑

在学习中遇到的一个面试题,可能有人发过了,但我还是要发,我就是我!                                 
                  int a = 100;
                  int b = 150;
请用代码实现出现以下结果:
                   int a = 150;
                   int b = 100;
  首先拿到题目的时候要想想自己学过什么只是可以进行这样赋值
        (1)        第一种:通过设置一个第三方变量,进行两者值得互换;
                 int c = a;(通过创建一个变量c,将a 的值赋值给c,)
                     a = b;(将b的值赋值给a)
                     a = c ;(最后将c的值赋值给a)
这样就完成了a和b的值的互换,
         (2)     在java语言中有一个符号"^"通称异或,此符号有个规律一个数异或一个数两次,本身的值不变,
那么  就可以通过这个符号来进行数据的交换 这个^的原理是在二进制中实现的,如果相同则为0,不同则为1;
10的二进制表现形式是 0000000 00000000 00000000 00001010 ;20 的二进制表现形式是     00000000 00000000 00000000 00010100;  ,10^20 得出结果:                               00000000 00000000 00000000 0011110 ;通过计算机翻译成十进制数字就是30,10^20^20结果就是00000000 00000000 00000000 00001010; 通过计算机转成十进制就是10.}
                  a = a ^b;          
                  b= a^b; (b = (a^b^a = a))
                  a = a^b;(a = (a^a^b = b))
这样就让a的值与b的值发生了交换;




1 个回复

倒序浏览
给你个赞!我刚刚也看到这
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马