两种方法位运算实现加法器
按照惯例先来一段代码:先看feibo1#include<iostream>using namespace std;int feibo1(int n){int res;int first = 1;int second = 1;if (n < 3){return 1;}for(int i = 2; i <
·
一、递归解法:
#include<iostream>
using namespace std;
int add(int x, int y)
{
//异或实现两数相加不进位
int a = x^y;
//相与移位实现进位
int b = (x&y)<<1;
//如果b==0,没有进位了,就返回相加的结果
if (b == 0)
{
return a;
}
//继续递归相加和进位
return add(a, b);
}
int main()
{
int x, y;
while (cin >> x >> y) {
cout << add(x, y) << endl;
}
system("pause");
return 0;
}
二、循环解法:
#include <iostream>
using namespace std;
int add1(int x, int y)
{
int sum;
int carry;
int bx, by;
int base;
base = 1;
//carry用来判断是否需要进位
carry = 0;
sum = 0;
while (base != 0) {
bx = x & base;
by = y & base;
base <<= 1;
sum |= ((bx) ^ (by) ^ carry);
carry = ((bx & by) || (bx & carry) || (by & carry)) ? base : 0;
}
return sum;
}

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。
更多推荐
所有评论(0)