티스토리 뷰

[C언어 소스] 10진수를 2진수로 변환하는 소스



이번 포스팅에는 10진수를 2진수로 변환하는 소스입니다. 

cal.c

 
#include <stdio.h>

int main()
{
	int i,j; 
	int result[20]; 
	int num;

	printf("십진수를 이진수로 변환하는 프로그램\n");
	printf("숫자를 입력하세요 : "); 
	scanf("%d",&num);

	// 10진수를 2진수로 변환
	for(i=0; num>0 ; i++)
	{
		result[i]=num%2;
		num=num/2;
	}

	printf("변환 결과\n");
	// 역순으로 출력
	for(j=i-1; j>=0; j--)
	{
		printf(" %d",result[j]);
	}
	printf("\n");

	return 0;
}



실행화면



10진수를 2진수로 변환하는 소스를 실행한 화면입니다.


댓글
  • 프로필사진 Ryu input이 0인 경우에 대한 처리가 없네요
    0인비트열을 출력해주던지 해야할텐데
    2015.09.17 17:57
  • 프로필사진 코드가 쉽고 깔끔하네요 감사합니다 2017.09.18 00:15
  • 프로필사진 신동석 #include <stdio.h>

    // source 코드 원본은 http://www.jynote.net/448 를 참조했습니다.

    void fMassage(char *chMessage, int *input, int len)
    {
    int i = 0;
    printf("%24s", chMessage);
    // for (j = i - 1; j >= 0; j--)
    for (i = len - 1; i >= 0; i--)
    {
    printf("%1d", input[i]);
    if (i % (len/2) == 0 || i % (len/4) == 0)
    printf(" ");
    }
    printf("\n");
    }

    void fTwo(int *input, int len)
    {
    int i = 0;
    int num = 0;
    int minus = 0;
    static int count = 0;

    // 배열 초기화
    for (i = 0; i < len; i++) { input[i] = 0; };

    // 입력
    printf("[%d] 시도 \n", count);
    printf("[%d] 숫자를 입력하세요 : ", count);
    scanf_s("%d", &num);

    // 음수 검사
    if (num < 0)
    {
    num = -num;
    minus = 1;
    }

    // 10진수를 2진수로 변환
    for (i = 0; num > 0; i++)
    {
    input[i] = num % 2;
    num = num / 2;
    }
    fMassage("양수의 2진수 : ", input, len);

    // 음수인 경우, (1) 역전시킴
    if (minus == 1)
    {
    for (i = 0; i < len; i++)
    {
    input[i] = !(input[i]);
    }
    fMassage("역전 결과 : ", input, len);
    }


    // 음수인 경우, (2) 1을 더해줌
    if (minus == 1)
    {
    i = 0;
    input[i] = input[i] + 1;

    for (i = 0; i < len; i++)
    {
    if (input[i] > 1)
    {
    input[i] = 0;
    if ((i + 1) == (len - 1))
    break;
    input[i + 1] += 1;
    }
    }
    fMassage("1의 보수 결과 : ", input, len);
    }

    // 역순으로 최종 결과 출력
    fMassage("최종 결과 : ", input, len);
    count++;
    }

    int main()
    {
    int i = 0, j = 0, num = 0, minus = 0;
    int input[16];
    // 프로그램 실행
    printf("십진수를 이진수로 변환하는 프로그램\n");
    while(1)
    fTwo(input, 16);
    // 프로그램 종료
    return 0;
    }
    2018.07.06 03:43
  • 프로필사진 개구리 인터넷에서 검섹쓰를 하는 이유는 다 읽기 귀찮고, 빨리 끝내고 싶고, 복잡한 것은 싫고,
    그래서 검섹쓰 하는 것 아니겠어요.
    틀린 것은 수정하면 되는 것이고,
    한눈에 쏘옥 들어오는 간단한 코드가
    제격인 듯 해 보입니다.
    그래도 이왕이면 틀리지 않은 코드를 올렸으면 더 좋았을 텐데...
    그래서 이코드 버리고 다른 코드 찾으러 총총총~ 정처기 수험서에 있긴 한데 귀차니즘이 발동해서 ㅠㅠ
    2019.09.18 23:45
댓글쓰기 폼
공지사항
Total
3,169,499
Today
221
Yesterday
905
«   2019/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        
글 보관함