> 백엔드 개발 > C++ > 본문

在C语言中,对两个整数进行按位递归相加

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

在C语言中,对两个整数进行按位递归相加

在这个问题中,我们得到了两个数字。我们的任务是创建一个 C 程序,用于两个整数的按位递归加法。

使用按位运算求和的逻辑与我们在学前班时所做的类似。为了求和,我们通常将数字的每个数字相加,如果存在进位,我们将其添加到下一个数字。

我们将做类似的事情,使用 XOR 运算符求和并使用 AND 运算检查进位。如果有进位,我们会将其加回数字,否则不会。

这是您可能在数字电子学中学到的半加器的逻辑。请参阅此处...

现在,总和是使用 a^b 计算的,即 XOR b,如果两者的第一位都设置了,我们需要检查是否需要传播额外的进位。我们需要在数字中添加一个额外的设置位。

因此,位算法将是

步骤 1 - 求 a 和 b 的 XOR即 a^b 并将其存储在结果变量中。

第 2 步 - 检查是否 {(a & b)

步骤2.1 - 如果等于0,则打印结果,即为最终结果。

步骤2.2 - 如果不等于0等于 0,然后转到步骤 1,其中 a = {(a & b)

示例

说明该函数工作原理的程序算法 -

 现场演示

#include 
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:tutorialspoint.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!