二进制数相加问题
本人初学C++。
问题如下:数组A、B分别存放n位二进制数,现在要将a+b的二进制数存入一个n+1位的数组。
以下是我写的程序,麻烦大家帮我看看问题出在哪。
#include <iostream>
#include "math.h"
using namespace std;
int main()
{
int i,n,a[100],b[100],c[100]={0};
int sum_a=0,sum_b=0,sum_c=0;
cout<<"请输入二进制数的位数n:"<<endl;
cin>>n;
cout<<"请输入二进制数a(以数组的形式:)"<<endl;
for (i=0;i<=n-1;i++)
{
cin>>a[i];
sum_a=sum_a+a[i]*pow(2,n-1-i);
}
cout<<"请输入二进制数b(以数组的形式:)"<<endl;
for (i=0;i<=n-1;i++)
{
cin>>b[i];
sum_b=sum_b+b[i]*pow(2,n-1-i);
}
cout<<"二进制数a对应的十进制数为:"<<sum_a<<endl;
cout<<"二进制数b对应的十进制数为:"<<sum_b<<endl;
for (i=n;i>=0;i--)
{
if (a[i-1]+b[i-1]+c[i]<=1)
{
c[i]=a[i-1]+b[i-1]+c[i];
}
else
{
c[i]=a[i-1]+b[i-1]+c[i]-2;
c[i-1]=c[i-1]+1;
}
}
cout<<"a+b得到的二进制数为:"<<endl;
for (i=0;i<=n;i++)
{
cout<<c[i];
}
for (i=0;i<=n;i++)
{
cin>>c[i];
sum_c=sum_c+c[i]*pow(2,n-i);
}
cout<<"二进制数c对应的十进制数为:"<<sum_c<<endl;
return 0;
}
问题如下:数组A、B分别存放n位二进制数,现在要将a+b的二进制数存入一个n+1位的数组。
以下是我写的程序,麻烦大家帮我看看问题出在哪。
#include <iostream>
#include "math.h"
using namespace std;
int main()
{
int i,n,a[100],b[100],c[100]={0};
int sum_a=0,sum_b=0,sum_c=0;
cout<<"请输入二进制数的位数n:"<<endl;
cin>>n;
cout<<"请输入二进制数a(以数组的形式:)"<<endl;
for (i=0;i<=n-1;i++)
{
cin>>a[i];
sum_a=sum_a+a[i]*pow(2,n-1-i);
}
cout<<"请输入二进制数b(以数组的形式:)"<<endl;
for (i=0;i<=n-1;i++)
{
cin>>b[i];
sum_b=sum_b+b[i]*pow(2,n-1-i);
}
cout<<"二进制数a对应的十进制数为:"<<sum_a<<endl;
cout<<"二进制数b对应的十进制数为:"<<sum_b<<endl;
for (i=n;i>=0;i--)
{
if (a[i-1]+b[i-1]+c[i]<=1)
{
c[i]=a[i-1]+b[i-1]+c[i];
}
else
{
c[i]=a[i-1]+b[i-1]+c[i]-2;
c[i-1]=c[i-1]+1;
}
}
cout<<"a+b得到的二进制数为:"<<endl;
for (i=0;i<=n;i++)
{
cout<<c[i];
}
for (i=0;i<=n;i++)
{
cin>>c[i];
sum_c=sum_c+c[i]*pow(2,n-i);
}
cout<<"二进制数c对应的十进制数为:"<<sum_c<<endl;
return 0;
}
...全文
相关推荐
PHP两个n位的二进制整数相加问题的解决
在二进制中,只有两位数0和1,当两个1相遇时,它们相加的结果是0,并且需要向高位进位1。这个问题可以通过循环遍历每一位并处理进位来解决。
二进制数转换成十进制数
将二进制数的每一位乘以其对应的权重。3. 将所有乘积相加,得到的结果就是对应的十进制数。
移位相加实现乘法
利用这个性质,我们可以将乘法问题转化为一系列的位移和加法操作。具体而言,假设我们要计算两个二进制数`A`和`B`的乘积,其中`A`和`B`分别由`n`位和`m`位组成。
二进制数转换成十进制数[收集].pdf
这个方法的核心思想是将二进制数的每一位看作其对应位置的2的幂次乘以该位的值,然后将所有的结果相加。
二进制数转换十进制
要将二进制转换为十进制,你需要将每个位上的数字乘以其权重,然后将所有结果相加。2. **示例**:假设我们有二进制数1101。


