一般面试题,出题人都是考我们开发用不到,要揣摩他的心思,位运算是奇葩点啊!下面就是两道,出题率高达90%以上:
第一题:请用最有效率的代码写出2乘以8
分析:咋一看,2乘以8,这么简单乘法运算,直接来个2*8,那你就错了,计算机运算都是二进制的,针对二进制的运算,肯定比你先将他们转换成二进制,再进行运算,不用为说,你肯定也知道哪个快了:
所以, 2<<3
第二题:请交换两个变量,有几种方法,请写出。
in x = 46;
int y = 80;
1,定义第三方(临时)变量:(这种主要是在我们以后做开发常用)
- int temp = x;
- x = y;
- y = temp
复制代码
2,位异或运算符(面试用)
- x = x^y;
- y = x^y; //x^y^y = x
- x= x^y ; //x^y^x = y
复制代码
小结论:前提(两个变量)左边x y x 右边:x^y
|