利用二进制运算实现加法(不使用四则运算)

匿名 (未验证) 提交于 2019-12-03 00:11:01

这两天去参加面试碰到的一个题,题不难,就是忘记了。

题目: 要求求两个整数之和,并且不得使用+、-、*、/ 四则运算符号。
解析: 很明显这个题要用二进制运算去解决。

  • 二进制的按位相加实际等效于异或。
  • 二进制的每位的进位计算等效于按位与,然后左移。
  • 进位加上按位相加结果就是最终结果。 重复使用前两步,直到没有进位为止。

代码如下:

#include <stdio.h>  int Add(int num1, int num2) {     int sum,carry;     do     {         sum = num1^num2;         carry = (num1 & num2)<<1;                  num1 = sum;         num2 = carry;         printf("%d,%d\n",num1,num2);  // 打印输出可以更方便看懂内部运行逻辑     }     while(num2!=0);     return num1; }  int main() {     int num1,num2;     scanf("%d%d",&num1,&num2);     printf("%d\n",Add(num1,num2));     return 0; } 
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!