달력

52024  이전 다음

  • 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

문제 : 10진수를 입력받아 2진수 변환하여 출력하시오

풀이: 결론부터 말하자면 아래와 같이 된다.

 

핵심은, '(2의 n승)>10진수(num)'가 되는 n을 찾는 것이다.

그 10진수의 최초 자리수가 (n-1이다). 그리고 그 n을 배열 순서대로 대입한다.

그 다음 자리수에 대해서도 마찬가지로 구한다. 즉 , 나머지 부분의 숫자'num=이전num-(2의 n-1승)' 이다.

 

 

메인함수의 printarr은 변환된 2진수의 각 자리수를 저장하기 위한 배열이다.

아래 for문으로 최초 자릿수를 구하고, if문에서 그 자릿수에 해당하는 배열 번지에 1을 넣는다.

 

 

그 다음 나머지 부분의 숫자'num=이전num-(2의 n-1승)'를 위와 같은 식으로 돌린다. goto문을 안 쓰고 이중 포문을 쓸 수도 있지만, 설명의 용이성 때문에 (핑계가 좋다ㅋ) goto문을 썼다.

모든 자리수를 구하면 더 이상의 나머지 숫자가 없어지므로 레이블 TWO로 넘어가서 출력을 한다.

이상으로 이진수 변환 프로그램을 짜 보았다. 배열을 단순하게 사용하였으나, '출력의 용도로 배열을 쓸 수 있구나'라는 착안이 중요하다. 또한 진수 변환의 원리를 이해하여 이를 코드화 하는 것이 중요하다. 어렵게 느낀다면 조건문과 반복문의 사용 및 변수 초기화 부분일 것이다.

 

잘 보았다 싶으시면, 링크추가나 손가락을 눌러주세요ㅋㅋ

 

 

Posted by C언어 보이
|