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

简介: 本文首发于我的个人博客:尾尾部落题目描述写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。解题思路用位运算来实现。

本文首发于我的个人博客:尾尾部落

题目描述

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

解题思路

用位运算来实现。

  • step1: 进行异或运算,计算两个数各个位置上的相加,不考虑进位;
  • step2: 进行位与运算,然后左移一位,计算进位值;
  • step3: 把异或运算的结果赋给 num1,把进位值赋给 num2,依此循环,进位值为空的时候结束循环,num1就是两数之和。

参考代码

public class Solution {
    public int Add(int num1, int num2) {
        if(num2 == 0)
            return num1;
        int sum = 0, carry = 0;
        while(num2 != 0){
            sum = num1 ^ num2;
            carry = (num1 & num2) << 1;
            num1 = sum;
            num2 = carry;
        }
        return num1;
    }
}
目录
相关文章
|
4月前
加减乘除简单吗?不,一点都不,利用位运算实现加减乘除(代码中不含+ - * /)
加减乘除简单吗?不,一点都不,利用位运算实现加减乘除(代码中不含+ - * /)
|
4月前
|
C++
C++系列-第1章顺序结构-6-加法、减法和乘法
C++系列-第1章顺序结构-6-加法、减法和乘法
|
4月前
|
C++
C++系列-第1章顺序结构-8-求商求余和除法
C++系列-第1章顺序结构-8-求商求余和除法
|
11月前
|
算法 C++
剑指offer(C++)-JZ65:不用加减乘除做加法(算法-位运算)
剑指offer(C++)-JZ65:不用加减乘除做加法(算法-位运算)
剑指offer 73. 不用加减乘除做加法
剑指offer 73. 不用加减乘除做加法
55 0
|
测试技术
【牛客】WY49数对,JZ65不用加减乘除做加法
【牛客】WY49数对,JZ65不用加减乘除做加法
143 0
【牛客】WY49数对,JZ65不用加减乘除做加法
不用加减乘除做加法(简单难度)
不用加减乘除做加法(简单难度)
85 0
不用加减乘除做加法(简单难度)
|
Java
不用加减乘除做加法
不用加减乘除做加法
89 0
不用加减乘除做加法
|
存储
移位运算、位运算、逻辑运算相关知识点及笔试题
移位运算、位运算、逻辑运算相关知识点及笔试题
265 0
移位运算、位运算、逻辑运算相关知识点及笔试题