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

ฉันจะบวกตัวเลขสองตัวโดยไม่ใช้ ++ หรือ + หรือตัวดำเนินการเลขคณิตอื่นๆ ใน C/C++ ได้อย่างไร


ในบทความนี้ เราจะมาดูวิธีการบวกตัวเลขสองตัวโดยไม่ต้องใช้ตัวดำเนินการทางคณิตศาสตร์ เช่น +, ++, - หรือ --

เพื่อแก้ปัญหานี้ เราสามารถแก้ไขได้โดยใช้ตรรกะไบนารีแอดเดอร์ ในกรณีนั้นเราได้รับการออกแบบครึ่งแอดเดอร์และแอดเดอร์เต็ม แอดเดอร์เหล่านี้สามารถเพิ่มเลขฐานสองได้หนึ่งบิต เราสามารถสร้างวงจรเพื่อเพิ่มจำนวนที่มากขึ้นได้โดยการเรียงซ้อนหลายแอดเดอร์ เราสามารถสร้างวงจรเพื่อเพิ่มจำนวนที่มากขึ้นได้

ในแอดเดอร์นั้น เราได้ดำเนินการ 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