我正在尝试在我的程序中添加二进制数字,但我对我所拥有的内容不满意,我的代码添加了这样的二进制数
1010
+1111
但我想改变它,以便当我输入像100010001这样的二进制数时它应该添加 像这样 1010 1111 我的代码自动添加,因为两个数组和数组中的值我想从键盘输入二进制数,它应该像上面的例子 这是我的代码
int main()
{
int a[4];
int b[4];
int carry=0;
int result[5];
a[0]=1;
a[1]=0;
a[2]=0;
a[3]=1;
b[0]=1;
b[1]=1;
b[2]=1;
b[3]=1;
for(int i=0; i<4; i++)
{
if(a[i]+b[i]+carry==3)
{
result[i]=1;
carry=1;
}
if(a[i]+b[i]+carry==2)
{
result[i]=0;
carry=1;
}
if(a[i]+b[i]+carry==1)
{
result[i]=1;
carry=0;
}
if(a[i]+b[i]+carry==0)
{
result[i]=0;
carry=0;
}
}
result[4]=carry;
for(int j=4; j>=0; j--)
{
cout<<result[j];
}
cout<<endl;
return 0;
}
我是一个新手,如果有错误,那么请纠正我,并提前给予我最好的建议
答案 0 :(得分:0)
我首先看到的是你没有从最右边开始。二进制数的加法与实数10的数字相同,因为你从右边开始并向左边工作,无论你剩下多少,你都将它附加到总和的开头。
所以和你的一起:
9 + 15
1001 + 1111
i = 3 - &GT; [] [] [] [0] - &gt; carry = 1
i = 2 ---&gt; [] [] [0] [0] ---&gt; carry = 1
i = 1 ---&gt; [] [0] [0] [0] ---&gt; carry = 1
i = 0 ---&gt; [1] [0] [0] [0] ---&gt; carry = 1
OH noes我们没空了
所以将附带附加到总和的前面:
[1] [1] [0] [0] [0] ---&gt; 24
答案 1 :(得分:0)
嗯,这是一个非常微不足道的问题。
如何在c ++中添加两个二进制数。它的逻辑是什么。
添加两个二进制数a和b。您可以使用以下等式来执行此操作。
sum = a xor b
carry = ab
这是半加法器的等式。
现在要实现这一点,您可能需要了解Full Adder的工作原理。
sum = a xor b xor c
carry = ab + bc + ca
由于您将二进制数存储在int数组中,因此您可能希望了解按位运算。您可以使用^表示XOR,| OR的运算符,&amp; AND的运算符。
以下是计算总和的示例代码。
for(i = 0; i&lt; 8; i ++) {
sum [i] =((a [i] ^ b [i])^ c); // c是随身携带
c =(([[i]&amp; b [i])|(a [i]&amp; c))| (b [i]&amp; c);
}