1. 程式人生 > >48不用加減乘除做加法

48不用加減乘除做加法

while 左移 public 一位 位運算 div class 循環 進位

題目描述

寫一個函數,求兩個整數之和,要求在函數體內不得使用+、-、*、/四則運算符號。

利用位運算
1、2個數異或,相當於每一位相加,不考慮進位
2、2個數相與並左移一位,相當於 求進位

循環把1,2 兩個步驟的結果相加,直到進位為0

 1 public class Solution {
 2     public int Add(int num1,int num2) {
 3         int sum = 0;
 4         if(num2==0) sum =num1;
 5         while(num2!=0){
 6             sum = num1 ^ num2;
7 int carry = (num1 & num2)<<1; 8 num1 = sum; 9 num2 = carry; 10 } 11 return sum; 12 } 13 }

48不用加減乘除做加法