Computer >> Máy Tính >  >> Lập trình >> lập trình C

Phép cộng đệ quy bitwise của hai số nguyên trong C


Trong bài toán này, chúng ta có hai số. Nhiệm vụ của chúng ta là tạo một chương trình C để cộng đệ quy Bitwise của hai số nguyên.

Logic để tìm tổng bằng các phép toán Bitwise tương tự như những gì chúng ta đã từng làm khi còn ở trường mầm non. Để tìm tổng, chúng tôi đã sử dụng để cộng từng chữ số của số và nếu có dấu ở đó, chúng tôi thêm nó vào chữ số tiếp theo.

Chúng tôi sẽ thực hiện một điều tương tự, tìm tổng bằng cách sử dụng toán tử XOR và kiểm tra giá trị mang theo bằng phép toán AND. Nếu có hành lý, chúng tôi sẽ thêm nó trở lại số nếu không.

Đây là logic của Half-Adder mà bạn có thể đã học trong Điện tử kỹ thuật số. Tham khảo tại đây…

Bây giờ, Tổng được tính bằng cách sử dụng a ^ b, tức là một XOR b và chúng ta cần kiểm tra xem có thêm một phần mang cần được truyền nếu bit đầu tiên của cả hai được đặt hay không. Và chúng ta cần thêm một bit đặt bổ sung vào số.

Vì vậy, một thuật toán bit sẽ là

Bước 1 - Tìm XOR của a và b tức là a ^ b và lưu trữ trong biến kết quả.

Bước 2 - Kiểm tra xem {(a &b) <<1} ==0

Bước 2.1 - Nếu bằng 0 thì in kết quả ra, là kết quả cuối cùng.

Bước 2.2 - Nếu nó không bằng 0, thì hãy chuyển sang bước 1, với a ={(a &b) <<1} và b =result.

Ví dụ

Chương trình minh họa hoạt động của thuật toán -

#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;
}

Đầu ra

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