10진수를 2진수로 바꾸는 법만 확실히 알면 나머지는 같은 패턴이에요.
📌 이 강의가 길면 ① 10→2진, ② 2→10진만 먼저 보고, ③④·파이썬 실습은 나중에 이어서 보세요.
🎮 게임에서 쓰는 곳 (언더테일·RPG)
세이브 파일의 HP, 골드, 플래그는 결국 숫자로 저장돼요. 메모리에는 0과 1(2진수)로 들어가고, 16진수는 색상 코드(#FF5500 같은)나 바이너리 덤프에서 자주 보입니다. 진법을 알면 "이 숫자가 게임 안에서 어떻게 비트로 쓰이는지"가 보여요.
진법 변환 — 규칙만 네 개
① 10진수 → 2진수
2로 나눈 나머지를 적고, 몫을 다시 2로 나누는 걸 몫이 0될 때까지 반복. 적어 둔 나머지를 맨 아래→맨 위 순서로 읽으면 2진수.
예: 13을 2진수로 — 한 줄에 한 번 나눗셈, 나머지만 오른쪽에 적기:
↓ 나머지를 아래에서 위로 읽으면 → 1101₂
25라면: 25÷2=12…1, 12÷2=6…0, 6÷2=3…0, 3÷2=1…1, 1÷2=0…1 → 11001₂
② 2진수 → 10진수
오른쪽부터 자리가 2⁰, 2¹, 2², … 그 자리 숫자×자리값을 더함.
1101₂ = 1×8+1×4+0×2+1×1 = 13
③ 10진수 → 16진수
2 대신 16으로 나눈 나머지. 10~15는 A~F. 나머지를 아래→위로 읽음.
255 → 나머지 F,F → FF₁₆
④ 2진수 ↔ 16진수
2진수 4자리 = 16진수 1자리 (0000=0, 1111=F). 네 자리씩 묶어서 바꿈.
1111 1010₂ = FA₁₆
문제 및 해설 (정답 숨김)
정답 보기
정답: 11001₂
한 줄에 한 번씩 나눗셈하면:
↓ 나머지를 아래→위로 읽으면 → 11001₂
실습 — 손으로 풀어 보기
아래 문제를 풀어 본 뒤, 클릭해서 정답을 확인하세요.
정답 보기
정답: 10010₂
18÷2=9…0, 9÷2=4…1, 4÷2=2…0, 2÷2=1…0, 1÷2=0…1 → 나머지를 아래→위로 읽으면 10010₂. 파이썬: bin(18) → '0b10010'
정답 보기
정답: 111₂
7÷2=3…1, 3÷2=1…1, 1÷2=0…1 → 111₂. 2³−1=7이라 2진수는 1이 세 개.
정답 보기
정답: 10
오른쪽부터 2⁰, 2¹, 2², 2³ → 0×1 + 1×2 + 0×4 + 1×8 = 2+8 = 10. 파이썬: int('1010', 2) → 10
정답 보기
정답: 15
1×1+1×2+1×4+1×8 = 15. 또는 2⁴−1=15이므로 4자리 2진수 최댓값.
정답 보기
정답: 64₁₆
100÷16=6…4, 6÷16=0…6 → 나머지를 아래→위로 읽으면 64₁₆. 파이썬: hex(100) → '0x64'
정답 보기
정답: DA₁₆
1101₂ = 8+4+0+1 = 13 = D, 1010₂ = 8+0+2+0 = 10 = A → DA₁₆. 파이썬: hex(0b11011010) → '0xda'
도전과제
조금 더 생각해 보면 풀 수 있어요. 풀어 본 뒤 정답을 펼쳐 확인하세요.
정답 보기
10진수: 26 (0×1+1×2+0×4+1×8+1×16 = 2+8+16 = 26)
16진수: 1A₁₆ (26÷16=1…10 → 나머지 10=A, 1 → 1A₁₆. 또는 11010을 0001 1010으로 묶으면 1, 10=A)
정답 보기
10진수: 26 (1×16 + 10×1 = 16+10 = 26)
2진수: 11010₂ (26을 2로 나눈 나머지: 26÷2=13…0, 13÷2=6…1, 6÷2=3…0, 3÷2=1…1, 1÷2=0…1 → 11010₂. 또는 1=0001, A=10=1010 → 00011010)
정답 보기
2진수: 110010₂ (50÷2=25…0, 25÷2=12…1, 12÷2=6…0, 6÷2=3…0, 3÷2=1…1, 1÷2=0…1 → 110010₂)
16진수: 32₁₆ (50÷16=3…2, 3÷16=0…3 → 32₁₆)
파이썬으로 확인: bin(50) → '0b110010', hex(50) → '0x32'
정답 보기
2진수: 11111111₂ (8비트로 나타낼 수 있는 최댓값. 2⁸−1=255)
16진수: FF₁₆ (255÷16=15…15 → 15=F이므로 FF₁₆. 2진수 1111 1111을 4자리씩 묶어도 F,F)
색상 코드에서 #FF0000(빨강), #00FF00(초록)처럼 한 채널 최댓값이 255(=FF₁₆)예요.
문제 및 답 확인 (빈칸 채우기)
13을 2로 나눈 나머지 네 개를 쓰고, 그 나머지를 아래→위로 읽은 2진수를 넣은 뒤 [확인]을 누르세요.
13÷2=6 나머지 → 6÷2=3 나머지 → 3÷2=1 나머지 → 1÷2=0 나머지
문제 및 실습
같은 방식으로 다른 숫자도 2진수·16진수로 바꿔 보세요. 아래에서 파이썬으로 바로 확인할 수 있어요.
📌 이론(진법 변환) ↔ 파이썬 함수
진법 변환 10진→2진/16진 → bin(), hex() | 2진/16진 문자열→10진 → int(문자열, 밑)
대응 정수 → 2진수/16진수 문자열로 바꿀 때 쓰는 내장 함수예요.
bin(정수)- 2진수 문자열로 바꿔요.
bin(25)→'0b11001'(0b는 2진수 표시). hex(정수)- 16진수 문자열로 바꿔요.
hex(25)→'0x19'. 역으로 문자열을 정수로:int('11001', 2)→ 25.
왜 쓰나요? 손으로 나머지 구한 결과를 코드로 검증할 때 위 함수를 쓰면 됩니다.