2

私は自分のプログラムに 2 進数を追加しようとしていますが、私が持っているものに満足していません。私のコードはこのような 2 進数を追加します

1010
+1111

しかし、100010001 のような 2 進数を入力すると、この 1010 + 1111 のように追加されるように変更したい 2 つの配列と配列内の値のために、キーボードから 2 進数を入力したいので、コードが自動的に追加されます上記の例のようにする必要がありますこれは私のコードです

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

私は初心者なので、間違いがある場合は修正してください。事前に最善のアドバイスをお願いします。

4

2 に答える 2

0

私が最初に目にするのは、あなたが一番右のビットから始めていないということです。2 進数の足し算は、10 を底とする実数の場合と同じで、右から始めて左に向かって作業し、残ったビットが何であれ、それを合計の先頭に追加します。

だからあなたと:

9 + 15

1001 + 1111

i = 3 --> [][][][0] -->キャリー = 1

i = 2 --->[][][0][0] --->キャリー = 1

i = 1 --->[][0][0][0] --->キャリー = 1

i = 0 --->[1][0][0][0] --->キャリー = 1

ああ、私たちはスペースを使い果たしました

したがって、キャリーを合計の前に追加します。

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

于 2013-02-20T07:06:51.117 に答える