码迷,mamicode.com
首页 > 其他好文 > 详细

剑指offer 不用加减乘除做加法

时间:2020-02-11 10:01:40      阅读:87      评论:0      收藏:0      [点我收藏+]

标签:span   return   二进制   amp   结果   int   while   位运算   solution   

用位运算模拟加法,num1+num2的加法结果可以分为两个部分,一部分为二进制位加法产生了进位的结果,另一部分是二进制位加法没产生进位的结果。

比如3+5,二进制011+101,产生进位的结果为最后一位1+1,进到倒数第二位,结果为010。没产生进位的是第1位0+1和第二位1+0,结果110。

 

 1 class Solution {
 2 public:
 3     int Add(int num1, int num2)
 4     {
 5         while(num1){//num1存加法的进位结果
 6             int temp=num2;
 7             num2=num1^num2;
 8             num1=(num1&temp)<<1;
 9         }
10         return num2;
11     }
12 };

 

剑指offer 不用加减乘除做加法

标签:span   return   二进制   amp   结果   int   while   位运算   solution   

原文地址:https://www.cnblogs.com/FdWzy/p/12293546.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!