剑指offer 不用加减乘除做加法
Posted fdwzy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指offer 不用加减乘除做加法相关的知识,希望对你有一定的参考价值。
用位运算模拟加法,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 不用加减乘除做加法的主要内容,如果未能解决你的问题,请参考以下文章