不使用+、-、*、/运算符实现两个数之和

实现两个数之和:

  1. 两个数异或等于两个数之和,但是不考虑比特进位,tmp1 = num1 ^ num2
  2. 两个数按位与之后左移一位表示进位,tmp2 = (num1 & num2)<<1;
  3. 循环执行上面两步,直到进位tmp2为0,num1 =tmp1;num2 = tmp2;
#include <iostream>
using namespace std;
int main()
{
  int num1 = 0;
  int num2 = 0;
  while(cin>>num1>>num2)
  {
    int add = 0;
    int tmp1 = 0;
    int tmp2 = 0;
    while(1)
    {
      tmp1 = num1^num2;
      tmp2 = (num1&num2)<<1;
      if(tmp2 == 0)
      {
        add = tmp1;
        break;
      }
      num1 = tmp1;
      num2 = tmp2;
    }
    cout<<add<<endl;
  }
  return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_41318405/article/details/89060992