美文网首页
<剑指Offer>面试题65: 不用加减乘除做加法

<剑指Offer>面试题65: 不用加减乘除做加法

作者: cb_guo | 来源:发表于2019-02-26 20:52 被阅读0次

题目描述

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

题目解读

  • 剑指Offer 310

代码

class Solution {
public:
    int Add(int num1, int num2){
        int sum, jinwei;
        do{
            sum = num1 ^ num2;
            jinwei = (num1 & num2) << 1;
            num1 = sum;
            num2 = jinwei;
        }while(num2 != 0);
        return num1;
    }
};

扩展题目

不使用新的变量,交换两个变量的数值。比如我们有两个变量 a, b,我们希望交换它们的值。有两种不同的方法

  • 方法一、基于加减法
a = a + b;   // a 暂存两数之和
b = a - b;   // b为两数之和减去b,b变为原来的a
a = a - b;   // a为两数之和减去现在的b(原来的a),变成原来的b
  • 方法二、基于异或运算
a = a ^ b;
b = a ^ b;
a = a ^ b;

相关文章

网友评论

      本文标题:<剑指Offer>面试题65: 不用加减乘除做加法

      本文链接:https://www.haomeiwen.com/subject/aysayqtx.html