Skip to content

Latest commit

 

History

History
22 lines (14 loc) · 903 Bytes

不用加减乘除做加法.md

File metadata and controls

22 lines (14 loc) · 903 Bytes

不用加减乘除做加法

知识点:

题目描述

写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。

解题思路

比如a=13 ,b=11,计算a+b: a:13 1101 b:11 1011 a+b:24 11000

  • a&b表示a+b的结果中需要进位的位,这里是1001,表示第1位、第4位都需要进位,那么最终进完位之后的结果是1001<<1=10010
  • 上面一步处理了a+b中进位的位的处理,那么对于不进位的位,应该使用a^b即异或,结果为0110
  • 到这里,使用0110+10010结果是11000即为答案,但是不能使用加法,处理的思路还是和a+b一样,重复对其执行上面两步,直到最后相加的两个二进制数加完不会产生进位即二者与完之后结果为0,这个时候用或运算即可将二者合并得到最终结果。

代码

这里