修改我的代码中两个二进制数字的加法

modifying the addition of two binary numbers in my code

本文关键字:二进制数字 两个 代码 我的 修改      更新时间:2023-10-16

我试图在我的程序中添加二进制数,但我对我所拥有的不满意,我的代码添加了像这样的二进制数

1010
+1111

但我想更改它,这样当我输入像100010001这样的二进制数时,它应该加像这样1010+1111由于有两个数组和数组中的值,我的代码会自动添加,我想从keybord输入二进制数,它应该像上面的例子一样这是我的代码

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

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

我首先看到的是,您没有从最正确的位置开始。二进制数的加法与实数10的加法相同,因为你从右边开始,向左移动,无论你剩下什么位,你都会把它加到和的开头。

你的

9+15

1001+1111

i=3-->[][][][0]->进位=1

i=2-->[][][0][0]-->carry=1

i=1-->[][0][0][0]--->进位=1

i=0-->[1][0][0][0]--->进位=1

哦,不,我们的空间用完了

所以把进位加到和的前面:

[1] [1][0][0][0]--->24

这是一个非常琐碎的问题。

如何在c++中添加两个二进制数。它的逻辑是什么。

对于添加两个二进制数,a和b。您可以使用以下公式来进行添加。

sum=a xor b

carry=ab

这是半加法器的方程式。

现在要实现这一点,您可能需要了解Full Adder是如何工作的。

sum=a xor b xor c

carry=ab+bc+ca

由于您将二进制数存储在int数组中,所以您可能需要了解按位运算。您可以使用^表示XOR,|运算符表示OR,&AND的运算符。

这是一个计算总和的示例代码。

对于(i=0;i<8;i++){

sum[i]=(((a[i]^b[i])^c);//c是携带

c=((a[i]和b[i])|(a[i]&c))|(b[i]&aamp;c);

}