不使用“+”“-”操作符計算兩數之和

不使用“+”“-”操作符計算兩數之和

算法思路:
  • 設有a=3,b=6
  • a=0011, b =0110
  • 所以不進位和是5 =0101,進位爲2 =0010
  • 所以a+b就變成了5+2<<1

  • 然後有5 =0101, 2<<1 =0100

  • 不進位和是1 =0001, 進位是4 =0100
  • 所以a+b變成1+4<<1

  • 然後有1 =0001, 4<<1 =1000

  • 不進位和是9 =1001, 進位是0 =0000

實現代碼如下:

public static int getSum(int a, int b){
        int Carry = a&b;    //進位
        int SumNoCarry = a^b;   //非進位
        if(Carry != 0)
            return getSum(Carry<<1, SumNoCarry);
        else
            return SumNoCarry;
    }
發佈了16 篇原創文章 · 獲贊 7 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章