ในบทความนี้ เราจะมาดูวิธีการบวกตัวเลขสองตัวโดยไม่ต้องใช้ตัวดำเนินการทางคณิตศาสตร์ เช่น +, ++, - หรือ --
เพื่อแก้ปัญหานี้ เราสามารถแก้ไขได้โดยใช้ตรรกะไบนารีแอดเดอร์ ในกรณีนั้นเราได้รับการออกแบบครึ่งแอดเดอร์และแอดเดอร์เต็ม แอดเดอร์เหล่านี้สามารถเพิ่มเลขฐานสองได้หนึ่งบิต เราสามารถสร้างวงจรเพื่อเพิ่มจำนวนที่มากขึ้นได้โดยการเรียงซ้อนหลายแอดเดอร์ เราสามารถสร้างวงจรเพื่อเพิ่มจำนวนที่มากขึ้นได้
ในแอดเดอร์นั้น เราได้ดำเนินการ XOR ระหว่างตัวเลข จากนั้นสำหรับการแครี่ เรากำลังดำเนินการตามตรรกะ ANDing คุณลักษณะเหล่านี้ถูกนำมาใช้เพื่อเพิ่มตัวเลขสองตัว
โค้ดตัวอย่าง
#include <iostream> using namespace std; int add(int a, int b) { while (b != 0) { //until there is no carry, iterater int carry = a & b; //find carry by anding a and b a = a ^ b; //perform XOR on a and b, and store into a b = carry << 1; //the carry is shifted one bit to the left, and store it to b } return a; } int main() { int a, b; cout << "Enter two numbers to add: "; cin >> a >> b; cout << "The result is: " << add(a, b); return 0; }
ผลลัพธ์
Enter two numbers to add: 56 23 The result is: 79