您的位置:首页 > 职场人生

剑指offer--面试题47:不用加减乘除做加法

2016-09-28 15:54 381 查看


题目描述

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

python实现:

# -*- coding:utf-8 -*-
class Solution:
    def Add(self, num1, num2):
        # write code here
        if num1 == -num2:
            return 0
        result = 0
        num1 = num1&0xffffffff
        num2 = num2&0xffffffff
        MAXINT = 2**31-1
        while num2:
            c = num1^num2#c不同位
            num2 = (num1&num2)<<1#相同位
            num1 = c
            num1 = num1&0xffffffff
            num2 = num2&0xffffffff
        return num1 if num1<=MAXINT else -((~num1+1)&0x7fffffff)

c++实现:

class Solution {
public:
    //^表示加的值,&表示进位的值
    int Add(int num1, int num2)
    {
        if(num1==-num2)
            return 0;
        while(num2){
            int c = num1^num2;
            num2 = (num1&num2)<<1;
            num1 = c;
        }
        return num1;
    }
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: