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
https://docs.google.com/forms/d/e/1FAIpQLScDTEL8mVikBcAP9nh4x1NzQT3elvf_EElPt9jUuxQ6QT7PHw/viewform
자료 출처]
한빛미디어 - 컴퓨팅 사고력을 키우는 이산수학
'강의자료 > 이산수학문제풀이' 카테고리의 다른 글
[정보올림피아드 대비]19. 방정식을 활용한 문제 (11) | 2023.02.02 |
---|---|
[정보올림피아드 대비]18.그래프 관련 문제(한붓그리기외) (8) | 2023.01.26 |
[정보올림피아드 대비]16. 점화식(재귀 포함)을 이용한 문제 (12) | 2023.01.12 |
[정보올림피아드 대비]15. 집합의 성질을 이용한 문제 (11) | 2023.01.05 |
[정보올림피아드 대비]14. 논리.추론문제 (8) | 2022.12.15 |