2

2 桁の 2 進数を追加しようとしています。出力は、最後のビットを除いて問題ありません。コードの下の図に示すように、最後のビットは表示されません。ここで何が悪いのか誰か知っていますか?

int main(){
char C[9]={'\0','\0','\0','\0','\0','\0','\0','\0','\0'};
char B[9]={'0','1','0','0','0','0','0','1','\0'};
char A[9]={'0','1','0','0','0','0','0','0','\0'};
char sum[9]={'\0','\0','\0','\0','\0','\0','\0','\0','\0'};
char carry='0';

for(int i = 7; i >= 0; i--) {    
    C[i] = (A[i] ^ B[i]) ^ carry;
    carry = A[i] & B[i];
}
cout << A << endl << B << endl << C << endl;    //output shown below

//for wrap-around carry
for(int i = 7; carry!=0; i--) {
    sum[i] = C[i] ^ carry;
    carry = C[i] & carry;
}
 return 0;
 }

出力を表示します。最後の桁が欠落しています。

4

2 に答える 2

1

二項演算で 2 桁を追加していません。

これの代わりに、文字列を使用しています。

値に int を使用する場合は、二項演算子を使用できます。お気に入り "&"

myVar & 1少しでもあなたに与えます。

于 2013-11-14T13:28:51.037 に答える