2013-02-20 74 views
2

我試圖在我的計劃中添加的二進制數字,但林不快樂與我有什麼增加了兩個二進制數,我的代碼將二進制數這樣修改我的代碼

1010 
+1111 

,但我想改變它,使它當我輸入像100010001這樣的二進制數,它應該加 像這樣 +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; 
} 

IM新手這麼多,如果有錯誤,請糾正我,給我你的最好的建議在此先感謝

+1

我不知道我理解你想達到什麼..請解釋一下你想更清楚地做什麼 – Techmonk 2013-02-20 06:56:41

+0

你想添加除四位數字等任意長度的二進制數? – NeonGlow 2013-02-20 07:04:00

+0

好吧,如果你注意到我的代碼添加已經在數組中的二進制文件,但我想改變我應該輸入使用我的鍵盤的二進制數然後我想輸入10001111這樣的二進制文件,它應該像1000 + 1111一樣添加,希望我清楚:) – thanks 2013-02-20 07:04:15

回答

0

我明白了第一件事情是,你是不是開始於最右側位。二進制數的加法與真正的基數爲10的數字相同,因爲您從右邊開始向左邊工作,無論您剩下什麼位,都會將其附加到總和的開頭。

所以與你:

9 + 15

1001 + 1111

I = 3 - > [] [] [] [0] - >進位= 1

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

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

I = 0 ---> [1] [0] [0] [0] --->進位= 1

OH不一我們跑出空位

進所以追加到的前的總和:

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

0

那麼,它是一個相當微不足道的問題。

如何在C++中添加兩個二進制數字。它的邏輯是什麼。

要添加兩個二進制數,a和b。你可以使用下面的公式來做到這一點。

總和=一個XOR B

進位= AB

這是一個半加器的方程。

現在要實現這一點,您可能需要了解全加器的工作原理。

總和=一個XOR B XOR c ^​​

隨身= AB + BC + CA

既然您存儲二進制數的int數組,你可能需要了解位運算。您可以使用^作爲XOR,| OR的運算符,&運算符的AND。

以下是計算總和的示例代碼。

爲(I = 0;我< 8; i ++在) {

總和[I] =((A [1]^B [1])^ C); // c is carry

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

}