Computer >> 컴퓨터 >  >> 프로그램 작성 >> C 프로그래밍

C에서 두 정수의 비트 재귀 덧셈


이 문제에서는 두 개의 숫자가 제공됩니다. 우리의 임무는 두 정수의 Bitwise 재귀 덧셈을 위한 C 프로그램을 만드는 것입니다.

Bitwise 연산을 사용하여 합을 찾는 논리는 유치원 때 하던 것과 비슷합니다. 합계를 찾기 위해 숫자의 각 자릿수를 더하고 캐리가 있으면 다음 자릿수에 더합니다.

우리는 비슷한 일을 할 것입니다. XOR 연산자를 사용하여 합을 찾고 AND 연산을 사용하여 캐리를 확인합니다. 캐리가 있는 경우 그렇지 않은 경우 해당 번호에 다시 추가합니다.

이것은 반가산기 의 논리입니다. 디지털 전자공학에서 배웠을 수도 있습니다. 여기를 참조하세요...

이제 합계는 a^b, 즉 XOR b를 사용하여 계산되며 둘 다의 첫 번째 비트가 설정되거나 그렇게 되면 전파되어야 하는 추가 캐리가 있는지 확인해야 합니다. 그리고 숫자에 추가 설정 비트를 추가해야 합니다.

따라서 비트 알고리즘은

1단계 − a^b와 같은 a와 b의 XOR을 찾아 결과 변수에 저장합니다.

2단계 − {(a &b) <<1} ==0

인지 확인

2.1단계 − 0일 경우 결과를 출력하면 최종 결과입니다.

2.2단계 − 0이 아닌 경우 a ={(a &b) <<1} 및 b =결과인 1단계로 이동합니다.

예시

알고리즘의 작동을 설명하는 프로그램 -

#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’