> 백엔드 개발 > C++ > C에서 두 정수의 비트별 재귀적 추가

C에서 두 정수의 비트별 재귀적 추가

WBOY
풀어 주다: 2023-09-05 21:17:03
앞으로
1265명이 탐색했습니다.

C에서 두 정수의 비트별 재귀적 추가

이 질문에는 두 개의 숫자가 주어집니다. 우리의 임무는 두 정수의 비트별 재귀적 추가를 위한 C 프로그램을 만드는 것입니다.

비트별 연산을 사용한 합산 논리는 유치원에서 했던 것과 유사합니다. 정리하자면, 우리는 보통 숫자의 각 자릿수를 더하고, 캐리가 있으면 다음 숫자에 더합니다.

XOR 연산자를 사용하여 합계를 계산하고 AND 연산자를 사용하여 캐리를 확인하는 비슷한 작업을 수행해 보겠습니다. 캐리가 있으면 숫자에 다시 추가하고 그렇지 않으면 그렇지 않습니다.

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

이제 합계는 a^b, 즉 XOR b를 사용하여 계산됩니다. 두 비트의 첫 번째 비트가 설정된 경우 추가 캐리를 전파해야 하는지 확인해야 합니다. 숫자에 추가 설정 비트를 추가해야 합니다.

그래서 비트 연산은

1단계 - a와 b의 XOR, 즉 a^b를 찾아 결과 변수에 저장합니다.

2단계 - {(a & b)

2.1단계인지 확인 - 0과 같으면 최종 결과인 결과를 인쇄합니다.

2.2단계 - 0과 같지 않으면 0과 같으면 a = {(a & 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;
}
로그인 후 복사

Output

The sum of 54 and 897 using bitwise adding is 951&rsquo;
로그인 후 복사

위 내용은 C에서 두 정수의 비트별 재귀적 추가의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:tutorialspoint.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿