剑指offer不用加减乘除做加法
Posted yinbiao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指offer不用加减乘除做加法相关的知识,希望对你有一定的参考价值。
题目描述
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
分析:看到这种题目,就知道应该采用位运算
两个数异或,相当于这两个数的每一位相加,但是不考虑进位
两个数相与,并且左移一位,相当于求得进位
然后将上面两步的结果相加,就是结果
int Add(int a, int b) if(a==0) return b; if(b==0) return a; int x=a^b; //两个数异或:相当于每一位相加,而不考虑进位 int y=(a&b)<<1; //两个数相与,并且左移一位:相当于求得进位 return Add(x,y); //将上述两步的结果相加
以上是关于剑指offer不用加减乘除做加法的主要内容,如果未能解决你的问题,请参考以下文章