zoukankan      html  css  js  c++  java
  • 剑指offer: 不用加减乘除做加法

    题目描述:

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

    思路分析:

    由于不能直接使用四则运算,想到可以用位运算来解决。首先用异或运算可以求得未进位的相加和,即a^b;那么进位的求法可以通过与操作,得到在那几个位置产生了进位,同时进行左移,即将进位移动到对应位置上,(a&b)<<1。

    那么两数相加就将进位的部分和未进位的部分相加即可,但由于不能直接用加法符号,因此通过循环递归做以上操作,直到没有进位,那么当前的未进位数就是所求的结果。

    代码:

     1 class Solution {
     2 public:
     3     int Add(int num1, int num2)
     4     {
     5         
     6         while(num2!=0)
     7         {
     8             int Xor = num1^num2;
     9             int forward = (num1&num2)<<1;
    10             num1 = Xor;
    11             num2 = forward;
    12         }
    13         return num1;
    14     }
    15 };
  • 相关阅读:
    UML序列图
    接口初探
    Discuz初探
    Vim指令学习
    UCenter Home代码研读之space.php
    建站须知
    linux指令之文件的创建、查询、修改
    InitPHP初探
    php环境搭建
    Zend Framework学习之Zend_Db 数据库操作
  • 原文地址:https://www.cnblogs.com/LJ-LJ/p/11048116.html
Copyright © 2011-2022 走看看