【剑指offer】面试题65:不用加减乘除做加法

xiaoxiao2021-02-28  91

题目

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

思路

有空再补上 0.0

代码

/** * 题目: * 写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。 * * 思路: * 使用位运算 * * @author peige */ public class _65_AddTwoNumbers { public static int Add(int num1, int num2) { int sum = num1 ^ num2; int carry = (num1 & num2) << 1; while(carry != 0) { int tmp = sum; sum ^= carry; carry = (carry & tmp) << 1; } return sum; } }

测试

public class _65_Test { public static void main(String[] args) { test1(); } private static void test1() { int res = _65_AddTwoNumbers.Add(1, 4); MyTest.equal(res, 5); res = _65_AddTwoNumbers.Add(1, -4); MyTest.equal(res, -3); res = _65_AddTwoNumbers.Add(1, 0); MyTest.equal(res, 1); res = _65_AddTwoNumbers.Add(-3, 0); MyTest.equal(res, -3); res = _65_AddTwoNumbers.Add(1000000, 99999); MyTest.equal(res, 1099999); res = _65_AddTwoNumbers.Add(1234, 54321); MyTest.equal(res, 55555); } }
转载请注明原文地址: https://www.6miu.com/read-40822.html

最新回复(0)