[C언어] stdio.h 만 써서 (양수, 음수) 10진수를 2진수로 변환하는 코드 만들기

2019. 9. 27. 16:30·정리 전 게시글/공부 관련

(양수, 음수) 10진수를 2진수로 변환하는 프로그램.exe

 

CPP.exe
0.01MB

 

[C언어] stdio.h 만 써서 (양수, 음수) 10진수를 2진수로 변환하는 코드 만들기


 

오늘 기분 진짜 꿀꿀해서 마음 안정화및 평정심 유지를 위해

 

만들어 보고 싶었던 2진수 변환기를 만들었다.

 

#include<stdio.h>

#define NINE 9999

int nUmberCheck(int arr[NINE]);

int main()
{
	int iNpuTnUmber = 0, qUotiEnt = 0, sTackCount = 0;		// qUotiEnt = 몫
	int i, u, biNaryCount, zEroCount, oCta;
	int biNaryArray[NINE];		// 나머지가 저장되는 2진수 배열

	while (true)
	{
		/*변수 초기화*/
		biNaryCount = 0, zEroCount = 0, oCta = 8;

		/*biNaryArray배열을 전부 2로 초기화 합니다.*/
		for (i = 0; i <= NINE - 1; i++)
		{
			biNaryArray[i] = 2;
		}

		printf("10진수를 2진수로 변환합니다.\n10진수를 입력하시오. (예: 12 ) : ");
		scanf("%d", &iNpuTnUmber);

		/*입력된 값이 0일 경우*/
		if (iNpuTnUmber == 0)
		{
			printf("\n0을 입력하였습니다. 다시 입력해 주세요.\n\n");
			continue;
		}
		/*입력된 값이 양수일 경우*/
		else if(iNpuTnUmber > 0)
		{
			/*입력된 값을 몫변수에 저장*/
			qUotiEnt = iNpuTnUmber;

			/*입력 받은 값을 2로 나누어 나머지는 배열에 몫은 또 나누기 위해 몫에 저장합니다.*/
			for (i = 0; qUotiEnt > 0; i++)
			{
				biNaryArray[i] = qUotiEnt % 2;
				qUotiEnt = qUotiEnt / 2;
			}

			/*나머지가 몇 개 저장되었는지 확인하는 함수를 호출*/
			biNaryCount = nUmberCheck(biNaryArray);

			/*8자리를 만들기 위해 8의 배수에서 현재 배열의 갯수를 빼줍니다.*/
			while(1)
			{
				if (biNaryCount <= oCta)
				{
					zEroCount = oCta - biNaryCount;
					break;
				}
				else
				{
					oCta *= 2;
					continue;
				}
				
			}

			/*8의 배수의 자리를 이미 채워진 나머지를 제외하고 0으로 채웁니다.*/
			for (; zEroCount > 0; i++)
			{
				biNaryArray[i] = 0;
				zEroCount--;
			}

			printf("\n2진수변환 결과를 출력합니다.\n\n");

			/*배열에 저장된 나머지를 역순으로 출력합니다.*/
			for (u = i - 1; u >= 0; u--)
			{
				printf(" %d", biNaryArray[u]);
			}

			printf("\n\n");
			continue;
		}
		/*입력된 값이 음수일 경우*/
		else if(iNpuTnUmber < 0)
		{
			/*입력된 값을 * -1하여 몫변수에 저장*/
			qUotiEnt = iNpuTnUmber * -1;

			/*입력 받은 값을 2로 나누어 나머지는 배열에 몫은 또 나누기 위해 몫에 저장합니다.*/
			for (i = 0; qUotiEnt > 0; i++)
			{
				biNaryArray[i] = qUotiEnt % 2;
				qUotiEnt = qUotiEnt / 2;
			}

			/*나머지가 몇 개 저장되었는지 확인하는 함수를 호출*/
			biNaryCount = nUmberCheck(biNaryArray);

			/*배열에 저장된 나머지를 0은 1로 1은 0으로 변환합니다.*/
			for (u = 0; u < biNaryCount; u++)
			{
				if (biNaryArray[u] == 0) biNaryArray[u] = 1;
				else if (biNaryArray[u] == 1) biNaryArray[u] = 0;
			}

			/*1을 더해줍니다.*/
			for (u = 0; u < biNaryCount; u++)
			{
				if (biNaryArray[u] == 1)
				{
					biNaryArray[u] = 0;
					sTackCount = u;
				}
				else if(biNaryArray[u] == 0)
				{
					biNaryArray[u] = 1;
					break;
				}
			}

			/*8자리를 만들기 위해 8의 배수에서 현재 배열의 갯수를 빼줍니다.*/
			while (1)
			{
				if (biNaryCount <= oCta)
				{
					zEroCount = oCta - biNaryCount;
					break;
				}
				else
				{
					oCta *= 2;
					continue;
				}
			}

			/*8의 배수의 자리를 이미 채워진 나머지를 제외하고 1으로 채웁니다.*/
			for (; zEroCount > 0; i++)
			{
				biNaryArray[i] = 1;
				zEroCount--;
			}

			printf("\n2진수변환 결과를 출력합니다.\n\n");

			/*배열에 저장된 나머지를 역순으로 출력합니다.*/
			for (u = i - 1; u >= 0; u--)
			{
				printf(" %d", biNaryArray[u]);
			}

			printf("\n\n");
			continue;

		}
	}
}

/*배열의 나머지 갯수를 확인하는 함수*/
int nUmberCheck(int arr[9999])
{
	int i, count = 0;
	for (i = 0; i <= NINE - 1; i++)
	{
		if (arr[i] != 2)
		{
			count += 1;
		}
		else continue;
	}

	return count;
}

 

비트연산자같은건 배운지 한학기만에 까먹었고

 

다른 함수들은 모르기에

 

쓰지않고 근-본을 유지하며

 

stdio.h만을 사용한 양수, 음수 10진수를 2진수로 변환하는 코드를 만들어봤다.

 

 

음수를 2진수로 변환하는 방법도 까먹었기에 지식인에 물어봤음

 

 

 

어디 학교에서 2진수 변환 프로그램 만드는게 과제라던데

 

이렇게 쓰면 b는 줄라나

 

그래도 만들고 싶었던 코드 만드니까 기분이 풀린다 헤헤

저작자표시 (새창열림)

'정리 전 게시글 > 공부 관련' 카테고리의 다른 글

[C언어] 주소록에 이름과 전화번호를 입력하여 찾는 프로그램  (0) 2019.09.30
[C언어] 주사위를 돌려서 가장 많이 나온 수와 가장 적게 나온 수 구하기  (0) 2019.09.29
[파이썬] Turtle 도형 그리기 for, 배열을 이용해서 무지개 색깔로  (0) 2019.09.03
[티스토리 스킨 만들기] 하단 썸네일, 태그 글자 수정하기 Related Articles 최근 기사  (0) 2019.08.25
스크롤 바 CSS 만들기, 수정, div 스크롤 바, 특정 구역 스크롤 바 따로 만들기 총정리  (1) 2019.08.25
'정리 전 게시글/공부 관련' 카테고리의 다른 글
  • [C언어] 주소록에 이름과 전화번호를 입력하여 찾는 프로그램
  • [C언어] 주사위를 돌려서 가장 많이 나온 수와 가장 적게 나온 수 구하기
  • [파이썬] Turtle 도형 그리기 for, 배열을 이용해서 무지개 색깔로
  • [티스토리 스킨 만들기] 하단 썸네일, 태그 글자 수정하기 Related Articles 최근 기사
aptenia
aptenia
공부하면서 배운 것들
  • aptenia
    새벽의 아이디어
    aptenia
  • 전체
    오늘
    어제
    • 분류 전체보기 (279)
      • 논문 (0)
      • Roboracer (2)
      • 개발 아무거나 (1)
      • 일상 아무거나 (2)
      • 정리 전 게시글 (268)
        • 개발 관련 (25)
        • 정보 관련 (19)
        • 공부 관련 (224)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 네이버 블로그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    일본규슈공업대학교
    자바
    마크스크립트
    마인크래프트스크립트
    프로그래머스
    마인크래프트
    스크롤바CSS
    프로그래머스PCCE
    티스토리HTML
    파이썬
    이것이자바다확인문제
    빅데이터공모전
    C언어
    파이어베이스
    공개SW개발자대회
    이것이자바다연습문제
    C언어강좌
    안드로이드
    마인크래프트강화스크립트
    마크
    티스토리반응형2스킨편집
    컨텍스트스위칭
    이것이자바다
    티스토리스킨편집
    캡스톤디자인
    c언어초보
    백준
    반복하지않는수
    콜라츠추측
    C++강좌
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
aptenia
[C언어] stdio.h 만 써서 (양수, 음수) 10진수를 2진수로 변환하는 코드 만들기
상단으로

티스토리툴바