gpt4 book ai didi

c++ - 分隔二进制数的数字?

转载 作者:行者123 更新时间:2023-11-28 05:15:38 26 4
gpt4 key购买 nike

我想使用 C++ 创建一个半加器,为此我可能需要将二进制数字分开以将它们一个接一个地相加。我需要为此创建一个数组吗?例如,将第一个数字的第一个“索引”添加到第二个数字的第一个“索引”?对于那些不知道什么是半加器的人来说,它会将一个二进制数的单独数字与另一个数字相加,而不考虑进位。

It works like this:

1101
+0011
=1110

这是我编写的用于添加二进制数字的代码,我如何将其塑造成写入 4 位二进制数?

#include <iostream>
using namespace std;

int halfadd(int a,int b){
if (a==0){
if (b==0){
return 0;
}
else return 1;
}
else{
if (b==0){
return 1;
}
else return 0;
}
}

int main(){
int a,b;
cout <<"Enter the two numbers to be added: ";
cin>>a; cin>>b;
cout<<"***Half Sum***"<<endl;
cout<<a<<"+"<<b<<"="<<halfadd(a,b);
}

最佳答案

要事第一。让我先更新你的主要部分:我认为你的局部变量 a 和 b 最好是 std::string (不要忘记包含字符串标题)而不是整数:

string a,b;

那么您对 ​​halfadd 的调用可能如下所示:

cout << a << "+" << b << "=" << halfadd(stoi(a, nullptr, 2), stoi(b, nullptr, 2));

备注:std::stoi函数将数据从字符串转换为整数,std::stoi 的第三个参数是字符串表示的预期整数值的基数(如果你想知道的话)。

让我们继续讨论 halfadd 函数。由于您已将字符串转换为实际整数值,因此您可以使用例如按位运算符。 XOR操作正是您所需要的。只有当对应的位具有不同的值时,异或的结果才为 1。让我们看看我们简单的 halfadd 函数:

string halfadd(int a, int b) {
// C++ introduced keywords for operators
// so you can use keyword 'xor' too
return dec2bin(a ^ b); // ^ is XOR operator
}

最后但同样重要的是,我自己编写了一个将结果转换回字符串的函数。它可以看起来像这样的例子:

string dec2bin(int value) {
string result;
while (value) {
if (value % 2)
result = '1' + result;
else
result = '0' + result;
value /= 2;
}
return result;
}

关于c++ - 分隔二进制数的数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42735207/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com