面试题47:不用加减乘除做加法

来源:互联网 发布:手机淘宝上传宝贝教程 编辑:程序博客网 时间:2024/04/28 08:12

题目:写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
分析:因为不能用加减乘除,所有很容易想到转到位运算。
a^b //不带进位加
a&b //看哪几位有进位,进位左移一位,所以需要(a&b)<<1

  1. 递归
int Add(int a, int b){    if (b == 0){        return a;    }    int sum=a^b;    int carry=(a&b)<<1;    return Add(sum,carry);}
  1. 循环
int Add(int a,int b){    int sum=a;    int carry=b;    while(b!=0){        sum=a^b;        carry=(a&b)<<1;        a=sum;        b=carry;    }    return sum;}
0 0
原创粉丝点击