2025년, 코딩은 선택이 아닌 필수!

2025년 모든 학교에서 코딩이 시작 됩니다. 먼저 준비하는 사람만이 기술을 선도해 갑니다~

강의자료/이산수학문제풀이

[정보올림피아드 대비]17.진수를 활용한문제(2진수,10진수,16진수등)

원당컴1 2023. 1. 19. 09:22

1. n진법

n진법이란 0과 n-1 사이의 숫자들을 이용해 수를 표현하는 방식입니다.

즉 우리가 사용하는 10진법은 0~9까지의 수를 사용하며 컴퓨터가 사용하는 2진법은 0~1 까지의 수를 사용합니다.

n진법을 사용한다면 n을 기수(Base Number) 라고 합니다.

기수표기 예)

10진수 1234 : 1234(10)

2진수 1010 : 1010(2)

 

2. 10진수(Decimal Number)

10진수는 기수를 10으로 하는 수 체계이며 0과 9 사이의 숫자를 이용해 수를 표현합니다.

또한 10진수는 정수 1234 에 대해 다음과 같이 표현 할 수 있습니다.

1234(10) = 1*103 + 2*102 + 3*101 + 4*100

즉 오른쪽 부터 왼쪽으로 기수의 0승 , 기수의 1승 ,기수의 2승 자리와 같이 표현하며 각 숫자에 해당 값을 곱한 후 더한 값이 원래 숫자를 의미합니다.

 

3. 2진수(Binary Number)

2진수는 기수를 2로 하는 수 체계이며 0과 1 사이의 숫자를 이용해 수를 표현합니다.

또한 2진수 1010에 대해 다음과 같이 표현 할 수 있습니다.

1010(2) = 1*23 + 0*22 + 1*21 + 0*20 = 1*8 + 0*4 + 1*2 + 0*1 = 10(10)

마찬가지로 오른쪽부터 왼쪽으로 기수의 0승,기수의 1승,기수의 2승 자리와 같이 표현하며 각 숫자에 해당 값을 곱한 후 더한 값이 원래 숫자를 의미합니다.

 

4. 8진수(Octal Number)

8진수는 기수를 8로 하는 수 체계이며 0과 7 사이의 숫자를 이용해 수를 표현합니다.

또한 8진수 1234에 대해 다음과 같이 표현 할 수 있습니다.

1234(8) = 1*83 + 2*82 + 3*81 + 4*80

= 1*512 + 2*64 + 3*8 + 4*1 = 668(10)

마찬가지로 오른쪽부터 왼쪽으로 기수의 0승,기수의 1승,기수의 2승 자리와 같이 표현하며 각 숫자에 해당 값을 곱한 후 더한 값이 원래 숫자를 의미합니다.

 

5. 16진수(Hexadecimal Number)

기수를 15으로 하는 수 체계이며 0~9와 A(10)부터 F(15) 사이의 숫자를 이용해 수를 표현합니다.

또한 16진수 1F2D에 대해 다음과 같이 표현 할 수 있습니다.

1F2D(16) = 1*163 + F*162 + 2*161 + D*160 = 1* 4096 + F(15)* 256 + 2*16 + D(13) * 1 = 7981(10)

마찬가지로 오른쪽부터 왼쪽으로 기수의 0승,기수의 1승,기수의 2승 자리와 같이 표현하며 각 숫자에 해당 값을 곱한 후 더한 값이 원래 숫자를 의미합니다.

 

6. 진법별 사칙연산

  • 사칙 연산의 기본원리는 진법에 상관이 없습니다. 덧셈에서 10진수에서 10을 넘어 가는 경우 자신은 0~9 사이의 값을 남기고 10으로 나눈 몫이 올림이 되는 것과 같이 해당 진수로 나눈 나머지가 자신의 자리에 남고 몫이 앞의 자리에 올림이 됩니다.
  • 뺄셈의 빌림 수는 10진수 에서 10을 빌려 온다면 2진수는 2,16진수는 16을 빌려옵니다.

다음 2진수를 연산하는 방법을 살펴 봅니다.

문제풀이)

 

7. 10진수 -> 2진수/8진수/16진수

  • 정수부 : 변환하려는 기수로 몫이 0이 될 때까지 나누면서 나오는 나머지를 나열
  • 실수부 : 소수부가 0이 될 때까지 변환하려는 기수로 곱함

예) 163.875(10) => 2진수 변환

예) 163.875(10) => 8진수 변환

예) 163.875(10) => 16진수 변환

 

8. 2진수와 8진수 간의 변환

  • 8진수는 0과 7 사이의 숫자로 수를 표현하는 진법
  • 8진수 한자리를 2진수로 표현하는 데는 3비트가 필요함(7(8) -> 111(2))
  • 2진수를 8진수로 변환할 때는 2진수를 소수점 기준으로 3비트씩 나누고 각 3비트 블록을 10진수로 변환
  • 8진수를 2진수로 변환할 때는 8진수의 각 자리를 3비트의 2진수로 변환

예) 11100101.01001111(2) 를 8진수로 변환하는 과정

소수점을 기준으로 정수부와 실수부를 별개로 3비트 단위의 블록으로 만들자.

11 100 101 . 010 011 11
             

그 다음 각각의 값에 따라 10진수로 변환하면 각 갑은 0~7 사이의 값으로 나타난다.

11 100 101 . 010 011 11
3 4 5 . 2 3 6

따라서 11100101.01001111(2) = 345.236(8) 

 

예) 345.236(8) 을 2진수로 변환하는 과정

3 4 5 . 2 3 6
011 100 101 . 010 011 110

따라서 345.236(8)  = 11100101.01001111(2)

9. 2진수와 16진수 간의 변환

  • 16진수는 0~9와 A(10)에서 F(15)까지를 사용하여 수를 표현하는 진법
  • 16진수 한자리를 2진수로 표현하는데에 4비트가 필요(F(16) -> 1111(2))
  • 2진수를 16진수로 변환할 때는 2진수를 소수점을 기준으로 4비트씩 나누고, 각 4비트 블록을 10진수로 변환
  • 16진수를 2진수로 변환할 때는 16진수의 각 자리를 4비트의 2진수로 변환

예) 11100101.01001111(2) 를 16진수로 변환하는 과정

1110 0101 . 0100 1111
         

소수점을 기준으로 정수부와 실수부로 변환 한 다음 4비트씩 분리 한 다음 각 4비트씩을 16진수로 변환하면 된다.

1110 0101 . 0100 1111
E(14) 5 . 4 F(15)

11100101.01001111(2) = E5.4F(16)

예) E5.4F(16) 를 2진수로 변환하는 과정

E 5 . 4 F
1110 0101 . 0100 1111

 

[정보올림피아드 기출문제 유형]

https://docs.google.com/forms/d/e/1FAIpQLSfy_a92YCgvV7ewfeOE-xCv5Np_VdLmpWl81kYPy5nt-8Clmg/viewform

 

18-1.진수를 활용한 문제(2진수,10진수,16진수등)초등부

 

docs.google.com

https://docs.google.com/forms/d/e/1FAIpQLScDTEL8mVikBcAP9nh4x1NzQT3elvf_EElPt9jUuxQ6QT7PHw/viewform

 

18-2.진수를 활용한 문제(2진수,10진수,16진수등)중고등부

 

docs.google.com

 

 

자료 출처]

한빛미디어 - 컴퓨팅 사고력을 키우는 이산수학

사업자 정보 표시
원당컴퓨터학원 | 기희경 | 인천 서구 당하동 1028-2 장원프라자 502호 | 사업자 등록번호 : 301-96-83080 | TEL : 032-565-5497 | Mail : icon001@naver.com | 통신판매신고번호 : 호 | 사이버몰의 이용약관 바로가기