진법: 단계별 풀이가 있는 연습 문제

그림, 힌트, 자세한 풀이가 있는 무료 진법 연습 문제. 매번 새로운 값으로, 세 가지 난이도: 2진수·16진수를 10진수로, 2의 보수, 비트, 범위, 메모리.

무료 연습 문제쉬움
비트를 클릭해 설정하세요012806403201608040201

8비트 레지스터가 0x99을 담도록 비트를 설정하세요. 패턴의 값 N은 십진수로 얼마입니까?

0x99

비트를 클릭하면 0과 1이 바뀝니다. 상자는 패턴을 부호 없는 수로 보여 주며, 직접 입력할 수도 있습니다. 정확한 답: 정수, 반올림하지 않음.

다음 문제 →
진법 무료로 연습하기지금 진법 연습하기매일 무료 문제 5개. 카드 등록이 필요 없습니다.

연습 내용

  1. 쉬움2진수·16진수를 10진수로
  2. 보통2의 보수
  3. 어려움비트, 범위, 메모리

핵심 공식

자릿값
2진수 2k, 8진수 8k, 16진수 16k
10진수로
Σ dk·bk
10진수에서
기수로 나누고, 나머지를 아래에서 위로 읽음
16진수 ↔ 2진수
16진수 한 자리 = 4비트
2의 보수
비트를 반전하고 1을 더함

진법 처음부터 배우기

1수 체계란 무엇인가

일상에서는 10을 기수로 하는 십진법으로 셉니다. 숫자는 0부터 9까지 열 개이고, 각 자리는 오른쪽 자리의 열 배의 값을 가집니다.

352에서 3은 300, 5는 50, 2는 2를 나타냅니다. 오른쪽부터 자리의 값은 1, 10, 100입니다.

352 = 3 · 100 + 5 · 10 + 2 · 1

컴퓨터는 모든 것을 켜지거나 꺼지는 스위치로 저장합니다. 그래서 숫자 0과 1만 쓰는 2를 기수로 하는 이진법으로 셉니다.

이진 숫자 하나가 비트입니다. 8비트가 모인 것이 바이트입니다.

규칙은 어떤 진법에서도 같습니다. 각 숫자는 그 값에 기수의 거듭제곱을 곱한 값을 나타냅니다.

자가 점검 십진수 4721에서 7은 얼마를 나타내는가?
  1. 7000
  2. 700
  3. 70
  4. 7

답: 700. 오른쪽부터 자리의 값은 1, 10, 100, 1000입니다. 7은 세 번째 자리에 있으므로 7 · 100 = 700입니다.

2이진법과 십육진법

이진법에서 자리의 값은 오른쪽부터 1, 2, 4, 8, 16, …입니다. 각 자리는 오른쪽 자리의 두 배입니다.

8비트 수에서 자리의 값은 128, 64, 32, 16, 8, 4, 2, 1입니다.

012806413211608041201

이진수를 읽으려면 1인 비트의 자리 값을 모두 더하세요. 0011 0010은 32 + 16 + 2 = 50입니다.

긴 비트열은 읽기 어렵습니다. 프로그래머는 흔히 그 대신 16을 기수로 하는 십육진법(hex)으로 씁니다.

십육진법에는 숫자가 16개 필요합니다. 0부터 9까지 쓰고, 그다음 문자 A = 10, B = 11, C = 12, D = 13, E = 14, F = 15를 씁니다.

십육진법 자리의 값은 오른쪽부터 1, 16, 256, 4096입니다. 십육진수는 흔히 앞에 0x를 붙여 씁니다. 예: 0x2F.

십육진수 한 자리는 정확히 4비트이므로 0011 0010은 0x32입니다. 0011은 3, 0010은 2입니다.

자가 점검 0x1A는 십진수로 얼마인가?
  1. 110
  2. 11
  3. 161
  4. 26

답: 26. A = 10입니다. 자리는 16과 1이므로 1 · 16 + 10 · 1 = 26입니다. 숫자를 나란히 쓰거나(110) 더하면(11) 자리 값을 무시한 것입니다. 161은 자리를 거꾸로 쓴 것입니다.

3음수: 2의 보수

모든 자리가 양수인 바이트는 0부터 255까지 저장합니다. 이것을 부호 없음이라고 합니다.

음수를 저장하기 위해 컴퓨터는 2의 보수를 씁니다. 바뀌는 것은 가장 왼쪽 비트의 값이 +128이 아니라 −128이라는 점뿐입니다.

1−12806403201608041211

그래서 1000 0011은 −128 + 2 + 1 = −125입니다. 가장 왼쪽 비트를 부호 비트라고 하며, 1이면 음수입니다.

8비트 2의 보수 수는 −128(1000 0000)부터 +127(0111 1111)까지입니다.

음수 −x를 쓰려면 이진수의 +x에서 시작하여 모든 비트를 뒤집고(0은 1로, 1은 0으로) 1을 더하세요.

−5의 예: 5는 0000 0101입니다. 뒤집으면 1111 1010입니다. 1을 더하면 1111 1011입니다.

같은 비트 패턴을 부호 없는 수로 읽으면 값은 256 − x입니다. −5의 경우 251이고, 1111 1011은 실제로 128 + 64 + 32 + 16 + 8 + 2 + 1 = 251입니다.

자가 점검 8비트 패턴 1111 1111은 2의 보수 수를 저장한다. 그 값은 얼마인가?
  1. 255
  2. −127
  3. −128
  4. −1

답: −1. −128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 = −1. 255는 부호 없는 수로 읽은 값입니다. −127은 첫 비트를 111 1111 앞의 마이너스 부호로 취급한 값입니다.

4단계별 방법

이진수 또는 십육진수를 십진수로:

  1. 각 숫자 아래에 자리 값을 쓰세요. 이진수는 2의 거듭제곱, 십육진수는 16의 거듭제곱이며, 오른쪽의 1부터 시작합니다.
  2. 십육진수에서는 각 문자를 그 값으로 바꾸세요: A = 10부터 F = 15까지.
  3. 각 숫자에 자리 값을 곱하여 모두 더하세요.

2의 보수:

  1. 패턴을 읽으려면 가장 왼쪽 비트의 값을 −128(8비트에서)로 하고 1인 비트의 자리 값을 모두 더하세요.
  2. −x를 쓰려면 +x를 8비트로 쓰고, 모든 비트를 뒤집은 뒤 1을 더하세요.
  3. 그 패턴을 부호 없는 수로 읽은 값은 256 − x입니다. 비트가 맞는지 확인하는 데 쓰세요.

비트, 범위, 메모리:

  1. n비트는 2ⁿ가지 서로 다른 패턴을 줍니다.
  2. 부호 없는 수로는 0부터 2ⁿ − 1까지 저장합니다. 2의 보수로는 −2ⁿ⁻¹부터 2ⁿ⁻¹ − 1까지 저장합니다.
  3. 항목 k개에 각각 고유한 부호를 주려면 2b ≥ k인 가장 작은 b를 찾으세요.
  4. 메모리는 항목 수에 항목당 비트 수를 곱한 다음, 바이트는 8로, KiB는 1024로 나누세요.
M = 너비 × 높이 × 픽셀당 비트 수 / 8 / 1024 (KiB)

5풀이 예제

모든 단계를 따라가 보세요. 다음 단계를 열기 전에 미리 예측해 보세요.

풀이 예제

8비트 패턴 1011 0110은 2의 보수로 부호 있는 정수를 저장한다. 십진수로 그 값 N은 얼마인가?

1

자리 값 쓰기

1−12806413211608141201

2의 보수에서 가장 왼쪽 자리의 값은 −128입니다. 나머지 자리는 64, 32, 16, 8, 4, 2, 1입니다.

2

부호 비트 보기

가장 왼쪽 비트가 1이므로 음수입니다.

3

1인 비트 더하기

1인 비트는 −128, 32, 16, 4, 2의 자리에 있습니다.

N = −128 + 32 + 16 + 4 + 2 = −74
4

부호 없는 값으로 확인하기

부호 없는 수로 읽으면 패턴은 128 + 32 + 16 + 4 + 2 = 182입니다.

음수에서 부호 없는 값은 256 − x이므로 x = 256 − 182 = 74입니다. 다시 N = −74가 됩니다.

5

뒤집어서 확인하기

1011 0110을 뒤집으면 0100 1001이고, 1을 더하면 0100 1010입니다.

0100 1010은 64 + 8 + 2 = 74입니다. 따라서 원래 패턴은 −74입니다.

답

N = −74

6흔한 실수

  • 비트를 뒤집은 뒤 1을 더하는 것을 잊는 것. 결과가 1 작아집니다.
  • 2의 보수 패턴을 부호 없는 수로 읽는 것. 예를 들어 1111 1111을 −1이 아니라 255로 읽는 것.
  • 부호 비트를 다른 비트 앞의 마이너스 부호로 취급하는 것. 2의 보수에서 그 값은 −128입니다.
  • 자리를 거꾸로 쓰는 것. 값이 1인 자리는 항상 오른쪽에 있습니다.
  • 십육진수에서 A = 11을 쓰는 것. 문자는 A = 10부터 시작합니다.
  • 메모리 문제에서 비트와 바이트를 섞는 것. 비트 수를 8로 나누세요.
자가 점검 −5를 8비트 2의 보수 패턴으로 나타내면 무엇인가?
  1. 0000 0101
  2. 1000 0101
  3. 1111 1010
  4. 1111 1011

답: 1111 1011. 5는 0000 0101입니다. 뒤집으면 1111 1010이고, 1을 더하면 1111 1011입니다. 1111 1010은 1을 더하는 것을 잊은 것이고, 1000 0101은 5 앞에 마이너스 부호를 붙인 것입니다.

7시험 문제의 유형

  • 쉬움: 이진수와 십육진수를 십진수로. 8비트 이진수나 세 자리 십육진수를 십진수로 바꿉니다.
  • 보통: 2의 보수. 부호 있는 8비트 패턴의 값을 읽거나, 음수를 패턴으로 쓰고 그 부호 없는 값을 구합니다.
  • 어려움: 비트, 범위, 메모리. n비트에 들어가는 최댓값이나 최솟값, 부호 k개에 필요한 비트 수, 또는 이미지가 차지하는 메모리.

어려운 문제의 예: 픽셀당 24비트인 256 × 256 이미지는 256 · 256 · 24 / 8 / 1024 = 192 KiB를 차지합니다.

자가 점검 항목 375개에 각각 고유한 부호를 주는 데 필요한 최소 비트 수는 얼마인가?
  1. 188
  2. 512
  3. 8
  4. 9

답: 9. 2⁸ = 256은 부호가 부족하고 2⁹ = 512는 충분하므로 9비트입니다. 512는 부호의 개수이지 비트 수가 아닙니다.

앱에서 단계별로 배우기앱에서 단계별로 배우기

예제 풀이

예제 1쉬움
자리값2256B16E1

16진수 0x2BE를 10진수로 바꾸세요. N를 구하세요.

0x2BEA = 10 … F = 15

구하는 값: N

힌트 보기
  1. 16진수 자리값은 오른쪽부터 1, 16, 256, 4096입니다.
  2. 문자를 그 값(A = 10 … F = 15)으로 바꾸고 자리값을 곱해 더합니다.
  3. 2 = 2, B = 11, E = 14.
정답과 단계별 풀이 보기

위치 기수법: 각 자리의 값은 그 숫자에 밑의 거듭제곱을 곱한 것입니다. 2진수의 자리값은 1, 2, 4, 8, 16, …, 16진수는 1, 16, 256, …이며 A–F는 10–15를 뜻합니다. 8비트 2의 보수에서 가장 왼쪽 비트는 +128이 아니라 −128의 값을 가지며, 이렇게 음수를 저장합니다.

각 숫자에 자리값 곱하기

2·256 + 11·16 + 14·1 = 702

답

0x2BE = 702
예제 2보통
8비트 2의 보수0−12806403201608040201

8비트 2의 보수로 −45을 저장하도록 비트를 설정하세요. 부호 없는 수로 읽으면 패턴의 값 U은 얼마입니까?

N = −458 bit

구하는 값: U

힌트 보기
  1. 45을 2진수로 쓰고, 모든 비트를 뒤집은 다음 1을 더하세요.
  2. 45 = 0010 1101₂.
  3. 부호 없는 수로는 패턴이 256 + N과 같습니다.
정답과 단계별 풀이 보기

비트 설정: 각 비트는 2의 거듭제곱(128, 64, …, 1)의 값을 가집니다. 16진수 한 자리는 정확히 네 비트이고, 8비트 2의 보수에서 맨 왼쪽 비트의 값은 −128입니다. 비트 연산은 각 비트 자리를 따로 처리합니다.

반전하고 1 더하기

45 = 0010 1101
반전 후: 1101 0010
+1 → 1101 0011

부호 없는 수로 읽기

1101 0011₂ = 256 − 45 = 211

답

U = 211
예제 3어려움
비트를 클릭해 설정하세요012806403201608040201

0111 0001 >> 3의 8비트 결과가 되도록 비트를 설정하세요. 결과의 값 R은 십진수로 얼마입니까?

0111 0001>> 3

구하는 값: R

힌트 보기
  1. 3만큼 오른쪽으로 시프트하면 모든 비트가 3칸 오른쪽으로 이동합니다. 오른쪽 끝에서 밀려난 비트는 사라지고 왼쪽에 0이 들어옵니다.
  2. 왼쪽에서 오른쪽으로 한 번에 한 비트 자리씩 계산하세요.
  3. 결과의 처음 네 비트는 0000입니다.
정답과 단계별 풀이 보기

비트 설정: 각 비트는 2의 거듭제곱(128, 64, …, 1)의 값을 가집니다. 16진수 한 자리는 정확히 네 비트이고, 8비트 2의 보수에서 맨 왼쪽 비트의 값은 −128입니다. 비트 연산은 각 비트 자리를 따로 처리합니다.

비트별로

3만큼 오른쪽으로 시프트하면 모든 비트가 3칸 오른쪽으로 이동합니다. 오른쪽 끝에서 밀려난 비트는 사라지고 왼쪽에 0이 들어옵니다.

0111 0001 >> 3
= 0000 1110

결과의 값

0000 1110₂ = 14

답

R = 14

질문과 답변

진법: 무엇인가요?

일상에서는 10을 기수로 하는 십진법으로 셉니다. 숫자는 0부터 9까지 열 개이고, 각 자리는 오른쪽 자리의 열 배의 값을 가집니다.

352에서 3은 300, 5는 50, 2는 2를 나타냅니다. 오른쪽부터 자리의 값은 1, 10, 100입니다.

진법 문제는 어떻게 단계별로 푸나요?

위치 기수법: 각 자리의 값은 그 숫자에 밑의 거듭제곱을 곱한 것입니다. 2진수의 자리값은 1, 2, 4, 8, 16, …, 16진수는 1, 16, 256, …이며 A–F는 10–15를 뜻합니다. 8비트 2의 보수에서 가장 왼쪽 비트는 +128이 아니라 −128의 값을 가지며, 이렇게 음수를 저장합니다.

진법 연습에서는 무엇을 다루나요?
  • 쉬움: 2진수·16진수를 10진수로
  • 보통: 2의 보수
  • 어려움: 비트, 범위, 메모리

문제마다 값이 새로 바뀌므로 답이 아니라 푸는 방법을 익히게 됩니다. 막혔나요? 먼저 작은 힌트를 열고, 필요할 때만 전체 해설을 보세요.

연습 방법

  • 문제마다 값이 새로 바뀌므로 답이 아니라 푸는 방법을 익히게 됩니다.
  • 막혔나요? 먼저 작은 힌트를 열고, 필요할 때만 전체 해설을 보세요.
  • 진행 상황, 틀린 문제, 저장한 문제가 보관되므로 시험 전에 복습할 수 있습니다.

이 주제의 앞뒤 주제

다음 단계

계산기

이 주제가 포함된 강의

컴퓨터 과학의 다른 주제

인쇄용 학습지

진법 무료로 연습하기지금 진법 연습하기매일 무료 문제 5개. 카드 등록이 필요 없습니다.