PGR21.com
이전 질문 게시판은 새 글 쓰기를 막았습니다. [질문 게시판]을 이용바랍니다.
Date 2005/10/21 00:58:56
Name 夢[Yume]
Subject 혹시 C언어 잘하시는분 계시나요~
코드를 보는데 도무지 무슨말인지 이해가 가지 않아서 이렇게 질문드립니다
8시부터 이때까지 잡고있는데 도무지 해답이 안나오네요
        
unsigned char a,b,c=1;
int i,carry=0,sum=0;
        printf("0~255사이의 더할 두 수를 입력하시오\n");
        scanf("%d%d",&a,&b);
        
        
        i=0;
        while (i<8)
        {
                sum=sum|((a&c)^(b&c)^(carry&c));
                if(carry)
                        carry=carry&(a&c)|(b&c);
                else
                        carry=(a&c)&(b&c);
                c=c<<1;
                carry=carry<<1;
                i++;
        }
        sum=sum|carry;
        printf("합은 %d 입니다\n",sum);

두 수의 합을 하는건데 저기 while문 가운데가 전혀 이해가 가질 않습니다 ㅠㅠ
비트가 어떻게 돌고 도는건지..
얼른 하고 자야할텐데....
혹시 아시는분 있다면 답변좀..ㅠㅠ
쓰기 좀 힘드시면 쪽지로도 부탁 드릴께요;;
힘들당..

통합규정 1.3 이용안내 인용

"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.
법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
바카스
05/10/21 01:01
수정 아이콘
8보다 작은 허수 일 때 무한계산이란 뜻 아닌가요 -_-?
내사랑루시아
05/10/21 01:40
수정 아이콘
걍 정수 덧셈인데 비트 단위로 계산 하는 코드입니다.
원리를 보여주려고 일부러 저렇게 만든듯...
夢[Yume]
05/10/21 01:42
수정 아이콘
넹 비트가 어떻게 도는지를 몰라서...ㅠㅠ
비트 단위로 계산하는걸 글로 설명하기 힘들까요?;;
내사랑루시아
05/10/21 01:50
수정 아이콘
unsigned char a,b,c=1;
int i,carry=0,sum=0;
printf("0~255사이의 더할 두 수를 입력하시오\n");
scanf("%d%d",&a,&b);


i=0;
while (i<8)

sum=sum|((a&c)^(b&c)^(carry&c)); // 현재 서메이션 값과 다음비트의 합의 결과를 합산함
// c는 계산할 비트가 몇번째 비트인지를 나타내는 수이며 &연산을 mask의 역할을 함
// (a&c)^(b&c)^(carry&c)는 이전 연산에서 얻어온 캐리와 해당 자리의 비트수를 합산한 결과임

if(carry) // 이전 비트의 연산에서 캐리가 있는경우
carry=carry&(a&c)|(b&c); // 두수의 특정비트의 합과 캐리를 합산

else // 캐리가 없는 경우
carry=(a&c)&(b&c); // 두수의 특정 비트만을 합산
c=c<<1; // 계산할 비트를 나타내는 수를 왼쪽으로 한비트 이동시킴
carry=carry<<1; // 캐리를 저정하는 변수 carry를 왼쪽으로 한비트 이동시킴
i++;

sum=sum|carry;
printf("합은 %d 입니다\n",sum);
내사랑루시아
05/10/21 01:51
수정 아이콘
수이며 &연산을 mask의 역할을 함 -> 수이며 &연산의 mask의 역할을 함
내사랑루시아
05/10/21 01:52
수정 아이콘
코드 설명을 쓰는건 쉬운데, 비트 단위의 연산이 이뤄지는 과정을 쓰기는 어렵네요.
논리회로책에서 가산기 부분을 살펴보시면 이해가 빠를 것 같습니다.
夢[Yume]
05/10/21 01:55
수정 아이콘
감사합니다 이해하도록 노력해봐야죠!!
내사랑루시아
05/10/21 01:55
수정 아이콘
추가로 설명드리면,
^ 연산은 xor연산이구요. 두수가 다른 경우에 1값을 가지고 두수가 같은 경우는 0값을 가집니다.

& 연산은 말그대로 AND연산이구요. 두 수가 1,1인 경우에만 1값을 가집니다.

| 연산은 OR연산이며 두수중 한개의 수가 1이면 1값을 가집니다.

<<연산은 SHIFT 연산인데 수의 각 비트들을 왼쪽으로 지정된 수만큼 이동시키는 연산입니다.
예를 들어 0000101 << 1
이면 0001010 이 되는거죠.
마지막 비트를 채우는 건 좀 어려운 문제라 걍 0으로 채워지는 걸로 했습니다.(그리고 대부분의 시스템에서 0으로 채워지구요.
내사랑루시아
05/10/21 02:03
수정 아이콘
제가 쓰고도 제가 이해가 안되네요. ㅡㅡ;;

핵심은 변수 c는 계산할 비트의 mask를 위한 변수이다.
carry는 캐리(두 비트의 합산에서 1,1인 경우에 발생함. 즉 올림)를 저장하는 수이다 입니다.

변수 c에 대해서 좀더 설명하자면, 첨에는 1로 되어 있고,
임의의 수 a가 2진수 1010101 이라고 하면
a&c는 0000001이 됩니다.
즉 해당하는 비트만 추출(?)하는 것이 가능하지요.
이후 변수 c가 << 1이 되면
우측에서 두번째 비트만 추출(?)하는 것이 가능해지구요.
이런 형태가 반복되면서 연산이 수행되는 것이죠.

쓸수록 난해해지는군요. ㅡㅡ;;

글재주가 없어서 죄송합니다.
夢[Yume]
05/10/21 02:35
수정 아이콘
답변 감사드립니다
지금 공책에 써가면서 보니 대충 이해는 가고있는데요
뺄셈과 곱셈도 해야하는데 문제군요 OTL.. 하나라도 더 이해를 하려고 노력중입니다;;;
월견초
05/10/21 16:31
수정 아이콘
이거 무슨 외계어 인가요?
문과인 저는 이런 코드 비슷한 것만 봐도 덜덜덜~ 거려 지네요 ^^;
이과생들은 정말 대단 합니다!!
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
11455 컴퓨터 모니터가 안켜지는데요 이거 머가 문제인가요? [4] DynamicToss1876 05/10/21 1876
11453 언어영역 공부는 어떻게....? [15] mysterious1806 05/10/21 1806
11452 친구관계와 돈문제.. [16] 뿡뿡이1588 05/10/21 1588
11451 혹시 C언어 잘하시는분 계시나요~ [11] 夢[Yume]2406 05/10/21 2406
11450 온게임넷 VOD서비스에 대해 질문입니다. [1] 프리티스푸1852 05/10/21 1852
11449 테란 대 프로토스 진출타이밍 질문~ [5] 슬레븐2228 05/10/20 2228
11448 mbc스타리그 관련 질문 [4] EastVirus1542 05/10/20 1542
11447 테테전에서...... [8] 낭만토스1580 05/10/20 1580
11446 FM2005 자료에 대해서.. [4] narciss2147 05/10/20 2147
11444 장재호선수 관련 질문요. [17] Galdae1875 05/10/20 1875
11443 등기부등본에 관한 질문입니다ㅡㅡ;; [1] 자리양보1664 05/10/20 1664
11442 pgtour런치가 안돌아가네요 [3] Bless1697 05/10/20 1697
11440 노래 추천좀..!! [5] 전성기제갈량1624 05/10/20 1624
11439 워3 기본 전략(?)에 대한 질문입니다. [6] 호랑이1951 05/10/20 1951
11438 재무 관리고수분들 도와주세요 [1] 토스사랑1746 05/10/20 1746
11436 헌혈증 사용에 대한 질문입니다 [1] 타나토노트2043 05/10/20 2043
11435 고등학교 진학 질문.. [12] KTF엔드SKT11767 05/10/20 1767
11434 오늘 프로리그 MBC게임...무슨 바람이 분거죠? [4] XoltCounteR1781 05/10/19 1781
11433 연예인중 가장 큰 영향역을 가진사람은 누구일까요? [14] 미아2145 05/10/19 2145
11432 이 말에 반박을 어떻게하죠? [13] 바카스1842 05/10/19 1842
11431 이런 노래 없나요? [5] EzMura1673 05/10/19 1673
11429 외고 진학 문제때문에... [5] Tech)MeronG1785 05/10/19 1785
11428 KT Cast 서비스 이용하시는분? [1] 지니쏠1601 05/10/19 1601
목록 이전 다음
댓글

+ : 최근 6시간내에 달린 댓글
+ : 최근 12시간내에 달린 댓글
맨 위로