本帖最后由 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的值发生了交换;
|
|