Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

การหาผลรวมของตัวเลขสองตัวโดยไม่ต้องใช้ '+', '-', '/', '*' ใน 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));

คำอธิบาย

สามารถรับผลรวมของสองบิตได้โดยดำเนินการ XOR (^) ของสองบิต และสามารถรับบิตพกพาได้โดยดำเนินการ AND (&) ของสองบิต

เราได้ใช้รุ่นเพิ่มเติมของตรรกะ Half Adder ที่สามารถใช้เพื่อเพิ่ม 2 บิตเดี่ยวเพื่อเพิ่มจำนวนเต็มสองจำนวน หาก x และ y ไม่มีบิตตั้งไว้ที่ตำแหน่งเดียวกัน ดังนั้น XOR (^) ระดับบิตของ x และ y จะให้ผลรวมของ x และ y

ในการรวมบิตชุดทั่วไปเข้าด้วยกัน จะใช้ระดับบิต AND (&) Bitwise AND ของ x และ y ให้บิตพกพาทั้งหมด เราได้คำนวณ (x &y) <<1 และเพิ่มลงใน x ^ y เพื่อให้ได้ผลลัพธ์ที่ต้องการ

ผลลัพธ์

และผลลัพธ์ในคอนโซลจะเป็น −

100