剣指offer面接問題65 python版+解析:加減乗除を加算しない

463 ワード

タイトルの説明
1つの関数を書いて、2つの整数の和を求めて、関数の体内で+、-、*、/の4つの演算記号を使用してはいけないことを要求します.
 
考え方:バイナリに変換
1.各ビットに対するキャリーの加算は考慮されず、排他的または排他的な結果と同じである.
2.キャリーを考慮し、2つの数を先に演算し、次に1つ左に移動します.
3.前の2つの結果を加算します.
# -*- coding:utf-8 -*-
class Solution:
    def Add(self, num1, num2):
        # write code here
        nsum = 0
        carrry = 0
        nsum = num1 ^ num2
        carry = (num1 & num2)<<1
        return nsum+carry