티스토리 뷰

코드 스니펫 복사

[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 신고
댓글쓰기 폼
공지사항
Total
2,868,640
Today
346
Yesterday
683
«   2018/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          
글 보관함