两道笔试题,大家帮忙看一下... http://topic.csdn.net/u/20081029/10/ee84a378-bdd0-41ec-a4af-916ba59baaba.html
1.已知x,不用+,-,*,/符号,计算出x+1的值;
2.检验一个整数是否为2的n次方数,要求用一行代码,而且不能使用循环语句。
如果对数值的二进制表示相当熟悉,而且聪明的话,应该不是问题。
第1题的解法:
- int add1(int x)
- {
- int i = 1;
- while(x&i)
- {
- x &=(~i);
- i = i<<1;
- }
- x |= i;
- return x;
- }
如果x是正数,那么abs(~x)就可以了,对于负数a