|
发表于 2007-3-27 14:20:01
|
显示全部楼层
按题意,加法也不能用吧? 位运算记得只包括 ~ ^ & | << >> 六种。
想了个按位全加的函数,没严格测试过,这样楼主的答案比较完整了~- // 递归版
- int bit_plus(int a, int b)
- {
- int carry=(a&b)<<1;
- int sum=a^b;
- if(!carry)return sum;
- return bit_plus(carry,sum);
- }
- // 迭代版
- int bit_plus2(int a, int b)
- {
- int carry=(a&b)<<1;
- int sum=a^b;
- int temp_sum;
- while(carry)
- {
- temp_sum=carry^sum;
- carry=(carry&sum)<<1;
- sum=temp_sum;
- }
- return sum;
- }
复制代码 |
|