이 질문에는 두 개의 숫자가 주어집니다. 우리의 임무는 두 정수의 비트별 재귀적 추가를 위한 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; }
The sum of 54 and 897 using bitwise adding is 951’
위 내용은 C에서 두 정수의 비트별 재귀적 추가의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!