黑马程序员技术交流社区

标题: 一个小的知识点. [打印本页]

作者: Tim-killer    时间: 2016-4-20 00:51
标题: 一个小的知识点.
本帖最后由 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的值发生了交换;





作者: jialianghao    时间: 2016-4-20 07:04
给你个赞!我刚刚也看到这




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2