例子:
1、用一个表达式,判断一个数X是否是 次方(2,4,6,8,16.....),不可循环语句
解析:2、4、6、8、16这样的数转化成二进制是10、100、1000、10000。如果X减1后与X做运算,答案若是0,则X是2^N次方。
答案!(X&(X-1))
2、请用位运算实现两个整数的加法运算
int Add(int a,int b){
if(b==0) return a;//没有进位的时候完成运算
int sum,carry;
sum =a^b;//完成第一步没有进位的加法运算
carry=(a&b)<<1;
return Add(sum,carry);//进行递归相加
}
3、有两个变量a和b,不用if 、?:、switch或其他判断语句,找出两个数中间比较大的。
答案:int max = ((a+b)+abs(a-b))/2