เราต้องเขียนฟังก์ชัน 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