在我的代码中修改两个二进制数的添加

时间:2013-02-20 06:53:52

标签: c++

我正在尝试在我的程序中添加二进制数字,但我对我所拥有的内容不满意,我的代码添加了这样的二进制数

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;
}

我是一个新手,如果有错误,那么请纠正我,并提前给予我最好的建议

2 个答案:

答案 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);

}

相关问题