面试题65:不用加减乘除做加法

这道题目很有意思,思路和方法都堪称完美:

/**
 * Created by clearbug on 2018/2/26.
 */
public class Solution {

    public static void main(String[] args) {
        Solution s = new Solution();
        System.out.println(s.add(5, 17));
        System.out.println(s.add(1, 0));
        System.out.println(s.add(1, 9));
        System.out.println(s.add(1, 8));
        System.out.println(s.add(1, -1));
        System.out.println(s.add(1, -2));
    }

    public int add(int num1, int num2) {
        int sum, carry;
        do {
            sum = num1 ^ num2;
            carry = (num1 & num2) << 1;

            num1 = sum;
            num2 = carry;
        } while (carry != 0);

        return num1;
    }
}
posted @ 2018-03-25 11:32  optor  阅读(143)  评论(0编辑  收藏  举报