分开二进制数字的数字
Separating digits of a binary number?
我想使用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函数将数据从字符串转换为Integer,std :: Stoi的第三个参数是字符串重新代表的预期整数值的基础(如果您想知道)。
。让我们继续进行HalfADD功能。由于您已将字符串转换为实际整数值,因此可以使用例如位运算符。XOR操作正是您需要的。仅当相应的位具有不同的值时,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;
}
相关文章:
- 查找最接近的大于当前数字的数字的索引
- 找到 x^n 的所有组合,并检查它们的总和是否等于一个不包括相同数字的数字
- C++ 中 11 位数字的数字的乘积
- 编写一个程序,提示用户输入一个整数,然后输出数字的单个数字和数字的总和
- 无法在按下数字和数字键时处理Qt C++中的QKey事件
- 如何在C 中分析二进制数字
- 编写二进制数字时出乎意料的结果[C ]
- C/C++ 方法中最快/最短计算二进制数字总和/又名二进制中的 1 数
- 如何通过C 从数字列表中以3位数字生成数字
- 浮点值未显示准确数字的数字C
- 分开二进制数字的数字
- 如何使用C 将二进制数字的字符串转换为其签名的十进制表示
- 如何在没有循环的二进制数字表示中只计算1位
- 在二进制数字中找到第一个位
- 在C 中添加二进制数字
- 确定二进制数字
- 有没有一种方法可以将表示为字符串的数字转换为等效的二进制数字
- 找出一个特定整数有多少个二进制数字
- 将整数更改为二进制数字字符串
- 修改我的代码中两个二进制数字的加法