在 JavaScript 中不使用 '+', '-', '/', '*' 查詢兩個數字的和


我們需要編寫一個 JavaScript 函式 add(),它接收兩個數字 m 和 n 作為輸入。該函式應該在不使用四則運算的情況下將這兩個輸入數字相加並返回它們的和。

示例

程式碼如下:

 線上演示

const m = 67, n = 33;
const add = (x, y) => {
   while(y !== 0){
      let carry = x & y;
      x = x ^ y;
      y = carry << 1;
   };
   return x;
};
console.log(add(m, n));

解釋

兩個位元的和可以透過對這兩個位元執行異或(^)運算來獲得。而進位位元可以透過對兩個位元執行與(&)運算來獲得。

這裡我們使用了半加器邏輯的擴充套件版本,該邏輯可以用於將兩個單個位元相加以新增兩個整數。如果 x 和 y 在相同的位置沒有設定位元,則 x 和 y 的按位異或(^)運算給出 x 和 y 的和。

為了合併常見的設定位元,也使用了按位與(&)運算。x 和 y 的按位與運算給出所有進位位元。我們計算了 (x & y) << 1 並將其新增到 x ^ y 以獲得所需的結果。

輸出

控制檯中的輸出將是:

100

更新於: 2021年3月3日

813 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.