C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[18654] [질문이요~! ^^;] 보수에 관해서입니다.
박준영 [unpre] 1199 읽음    2002-05-20 02:08
제가 2의 보수 변환하는 것을 프로그램상으로 구현해볼려고 했습니다.(이제 막 보수에 대해 디지털회로로 배웠거든요..)
우선 정수를 입력 받아서 2진수로 변환 뒤 0은 1로 1은 0으로 입력받고(이렇게 하면 1의 보수) +1을 해주면 2의 보수가 되겠죠.
이론은 쉽지만 구현이 어렵더군요. ^^;
우선 2진수 변환은 했습니다.(모듈러(나눈 나머지)를 r로 놓고 맨 마지막에 대입하고 나눈값을 뒤에서 더하는 방식으로 하긴 했는데..)
그런데 보수에서 막히네요.
여기 저기 물어봤더니 배열을 사용해야 한다고 하시더군요.
배열로 잡아서 2로 나눈 뒤 1은 0으로 0은 1로 바꿔가며 뒤에서부터 입력한다고 하시더군요.
그래서 이것저것 해봤지만 프로그래밍 지식이 부족해서 어떻게 해야 할지 헤메고 있네요.. ^^;
아래는 제가 짠 소스입니다.
이것저것 하면서 지우고 삽입하고 하다보니 아주 엉망입니다.
2의 보수 구하는 프로그램 좀 자세히 구현을 해주셨으면 진짜 평생 감사히 여기겠습니다.
모처럼 열심히 시도를 해봤는데 막히고 포기할려니...
돌려보시면 정수를 쓰면 보수가 바로 아래에 나오고 2진수변환이 그 아래에 프린트문으로 나옵니다.
문제는 입력수 바로 아래에 나오는 수가 앞에서부터 쓰입니다.
그러니깐 5를 쓰면 1의 보수가 앞에서부터 쓰여서 010 이 나오고 2진수 101 이 나오고..
6을 쓰면 1의 보수가 앞에서부터 쓰여서 100(원래는 001), 2진수 110 이 나옵니다.
8을 쓰면 1의 보수가 앞에서부터 쓰여서 1110(원래는 0111), 2진수 1000 이 나오죠.
지금 뭐가 어떻게 됐는지 저도 모를 정도로 복잡해져버렸습니다.
간단한 주석도 달아주시면 감사하겠습니다. ^^

#include <stdio.h>

#define N 16

void main()
{
    char *p, num[N+1] = {0};
    int i, r, n1, n2;
   
    while(1)
    {
        printf("\n정수를 입력하세요(종료:0) : ");
        scanf("%d", &n1);

        n2 = n1;

        if( n1 == 0)
            break;
        for( i = 0; n1 != 0; i++)
        {   
            r = n1 % 2;
            num[N-1-i] = r + '0';
                if (r==0)
                    printf("1");
                else
                    printf("0");
            n1 = n1 / 2;
        }
   
   
        p = num+N-i;
           
        printf("\n2진법으로 변환 : %s\n",p);
           
       
    }   
}

+ -

관련 글 리스트
18654 [질문이요~! ^^;] 보수에 관해서입니다. 박준영 1199 2002/05/20
18677     ANSI C++ 라이브러리의 bitset 클래스도 알아두세요. 김백일 2031 2002/05/20
18683         Re:감사합니다. ^^ 박준영 743 2002/05/21
18655     Re:[질문이요~! ^^;] 보수에 관해서입니다. 불사새 1162 2002/05/20
18656         Re:Re:잉잉.. 무슨 말인지 모르겠어요.. ㅠ.ㅠ 박준영 861 2002/05/20
18657             Re:Re:Re:잉잉.. 무슨 말인지 모르겠어요.. ㅠ.ㅠ 불사새 1017 2002/05/20
18658                 Re:Re:Re:Re:정말 정말 감사드립니다. 박준영 935 2002/05/20
18659                     Re:Re:Re:Re:Re:그런데요...(수정) 박준영 997 2002/05/20
18661                         Re:Re:Re:Re:Re:Re:그런데요...(수정) 불사새 998 2002/05/20
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.