不用加減乘除做加法(Java實現)

JacobGo發表於2017-05-18

本題為劍指offer面試題47

牛客網測試地址:https://www.nowcoder.com/questionTerminal/59ac416b4b944300b617d4f7f111b215

  • 時間限制:1秒空間限制:32768K
寫一個函式,求兩個整數之和,要求在函式體內不得使用+、-、*、/四則運算子號。
Java程式碼:

package go.jacob.day518;

/*
 * 對數字做運算,除了四則運算之外,也只剩下位運算了
 */
public class Demo2 {
	public int Add(int num1, int num2) {
		int sum = num1 ^ num2;
		int carry = (num1 & num2) << 1;
		while (carry != 0) {
			//進位
			int tmpCarry = (sum & carry) << 1;
			//不進位的結果,如果進位為0,迴圈結束
			sum = sum ^ carry;
			carry=tmpCarry;
		}

		return sum;
	}
}


相關文章