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

การบวกซ้ำแบบเรียกซ้ำของ Bitwise ของจำนวนเต็มสองตัวใน C


ในปัญหานี้ เราได้ตัวเลขสองตัว งานของเราคือสร้างโปรแกรม C สำหรับการบวกจำนวนเต็มสองจำนวนแบบเรียกซ้ำแบบ Bitwise

ตรรกะในการหาผลรวมโดยใช้การดำเนินการของ Bitwise นั้นคล้ายกับที่เราเคยทำตอนเรียนอนุบาล ในการหาผลรวม เราเคยบวกเลขแต่ละหลัก และถ้ามีการพกพา เราจะบวกเลขหลักถัดไป

เราจะทำสิ่งเดียวกัน ค้นหาผลรวมโดยใช้ตัวดำเนินการ XOR และตรวจสอบการพกพาโดยใช้การดำเนินการ AND หากมีพกพาเราจะบวกกลับหมายเลขมิฉะนั้นจะไม่.

นี่คือตรรกะของ ครึ่งแอดเดอร์ ที่คุณอาจเคยเรียนมาในระบบดิจิตอลอิเล็คทรอนิคส์ อ้างอิงที่นี่…

ตอนนี้ผลรวมคำนวณโดยใช้ a^b นั่นคือ XOR b และเราจำเป็นต้องตรวจสอบการพกพาเพิ่มเติมที่จำเป็นต้องเผยแพร่หากมีการตั้งค่าบิตแรกของทั้งสอง และเราจำเป็นต้องเพิ่มชุดพิเศษให้กับตัวเลข

ดังนั้นอัลกอริทึมบิตจะเป็น

ขั้นตอนที่ 1 − ค้นหา XOR ของ a และ b เช่น a^b และเก็บไว้ในตัวแปรผลลัพธ์

ขั้นตอนที่ 2 − ตรวจสอบว่า {(a &b) <<1} ==0

ขั้นตอนที่ 2.1 − หากเท่ากับ 0 ให้พิมพ์ผลลัพธ์ ผลลัพธ์คือผลลัพธ์สุดท้าย

ขั้นตอนที่ 2.2 − หากไม่เท่ากับ 0 ให้ไปที่ขั้นตอนที่ 1 โดยมี a ={(a &b) <<1} และ b =ผลลัพธ์

ตัวอย่าง

โปรแกรมแสดงการทำงานของอัลกอริธึม -

#include <stdio.h>
int addNumbers(int a, int b) {
   int carry = (a & b) << 1;
   int result = a^b;
   if (carry == 0)
      return result;
   else
      addNumbers(carry, result);
}
int main(){
   int a = 54, b = 897;
   printf("The sum of %d and %d using bitwise adding is %d", a, b, addNumbers(a, b));
   return 0;
}

ผลลัพธ์

The sum of 54 and 897 using bitwise adding is 951’