2013-02-20 1 views
2

내 코드에서 두 이진수의 추가, 수정, 내 코드는이내가 내 프로그램에서 이진 숫자를 추가하지만 난 무엇을 행복하지 메신저하려고

1010 
+1111 

처럼 진수를 추가하지만 내가 원하는 변경하면 100010001 같은 이진수를 입력하면 같은이 +1111 내 코드 두 배열 및 배열의 ​​값을 자동으로 추가하기 때문에 내가 keybord에서 이진 숫자를 입력하고 싶습니다 위의 예처럼해야합니다. 이것은 내 코드입니다.

012 3,516,
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; 
} 

메신저 정정 해줘 내가 볼 그럼 먼저 당신이 가장 오른쪽 비트에서 시작되지 않은 것입니다

+1

가 .. pls는 당신이 더 명확하고 싶으면 무엇인지 설명 – Techmonk

+0

네 개의 비트 숫자 이외의 임의의 길이의 진수를 추가 하시겠습니까? – NeonGlow

+0

괜찮 았으면 이미 배열에있는 바이너리를 추가하는 코드가 있음에도 불구하고 내 키보드를 사용하여 이진수를 입력해야한다는 것을 변경하고 싶습니다. 두 번째로 10001111과 같은 바이너리를 입력하고 싶습니다. 1000 + 1111, 나는 희망을 분명히합니다 :) – thanks

답변

0

사전에 나에게 최선의 조언 덕분에 적어주세요 실수가있을 경우 많은 초보자. 이진수를 더한 것은 오른쪽에서 시작하여 왼쪽으로 작업한다는 점에서 실제베이스 10 숫자와 동일합니다. 남은 비트 수만큼 합계의 시작 부분에 추가합니다. 네 너무

: + 1,111

I = 3

+ 15 9

1,001 -> [] [] [] [0] -> 반송 = 1

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

i = 1 ---> [] [0] [0] [0] - -> 캐리 = 1

I = 0 ---> [1] [0] [0] ---> 반송 = 1

OH의 noes 우리 공간 부족 [0]

그래서 전면에 반송을 추가 합계 :

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

0

음, 아주 사소한 문제이다.

C++에서 2 진수를 추가하는 방법. 그것의 논리는 무엇입니까?

두 개의 이진수 a와 b를 더하는 경우. 다음 방정식을 사용하여 그렇게 할 수 있습니다.

합은 배타적 B에게 = AB

이것이 하프 가산기 대한 방정식

캐리 =.

이제 이것을 구현하려면 Full Adder의 작동 방식을 이해해야합니다.

합계는 XOR B 형 배타적 C

캐리 = AB + BC 주를 = + 당신은 int 배열에 이진 번호를 저장하기 때문에

, 당신은 비트 연산을 이해 할 수 있습니다 ca를. ^를 사용하면 XOR, | OR 연산자, AND 연산자 &.

다음은 합계를 계산하는 샘플 코드입니다. 위한

(I = 0; I < 8; I ++) {

합 [I] = ((a [I]를^B [I])^c); // c는 캐리이다.

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

} 나는 당신이 달성하고자하는 것을 이해 확실하지 오전

관련 문제