함께 배우는 수업 · 컴퓨터/정보

진법 변환과 2진수 연산

컴퓨터의 기초 언어인 2진법, 8진법, 10진법, 16진법 상호 변환 및 비트 단위 덧셈·뺄셈·시프트 연산의 하드웨어적 원리를 학습합니다.

이 수업에서 해 볼 일

  • 자릿값으로 진법을 변환하고 연산 결과를 검산한다

먼저 알면 좋은 것: 거듭제곱과 지수 법칙 ($2^n$의 개념) · 10진법의 자릿값(기수법) 원리 · 나눗셈의 몫과 나머지 연산

오늘의 목표

가입 없이 시작할 수 있어요. 설명을 읽고, 함께 연습한 뒤, 처음 보는 문제에서 직접 확인합니다.

판단 과정과 비교 사례

진법은 숫자 모양보다 자리의 가중치가 핵심이다. 오른쪽부터 2⁰, 2¹, 2²을 붙이고 1인 자리만 더하면 2진수를 정수로 읽을 수 있다.예를 들어 10101₂는 16+4+1=21이다. 덧셈에서 1+1은 현재 자리에 0을 쓰고 왼쪽으로 1을 올린다. 0111₂+1은 1000₂이 된다.계산 전에 사용할 비트 수를 적자. 맨 왼쪽을 넘어간 자리올림을 버리는 고정 폭 연산과 비트 수를 늘려 쓰는 계산은 결과의 표현 범위가 다르다.

1. 컴퓨터가 2진수를 사용하는 이유와 비트·바이트 체계

- 트랜지스터와 스위칭 소자: 현대 디지털 컴퓨터의 하드웨어는 수십억 개의 미세한 반도체 트랜지스터(MOSFET)로 구성됩니다. 트랜지스터는 전압의 높음(High, 약 3.3V3.3\text{V} 또는 5V→15\text{V} \rightarrow 1)과 낮음(Low, 0V→00\text{V} \rightarrow 0)이라는 두 가지 상태만을 구분하여 작동합니다. - 신호 무결성과 노이즈 내성: 만약 10진수처럼 전압을 10단계(0.5V,1.0V,…0.5\text{V}, 1.0\text{V}, \dots)로 나누어 인식한다면, 전자기적 잡음(Noise)이나 온도 변화로 인해 전압이 조금만 흔들려도 데이터가 왜곡됩니다. 반면 2진법(Binary)은 임계 전압을 기준으로 켜짐(On, 1)과 꺼짐(Off, 0)만 판별하므로 신뢰성이 압도적으로 높고 논리 회로 설계가 단순해집니다. - 정보의 기본 단위: - 비트(Bit, Binary Digit): 0 또는 1 하나를 저장하는 최소 정보 단위입니다. nn비트로 표현할 수 있는 고유한 상태의 개수는 2n2^n개입니다. - 바이트(Byte): 8개의 비트를 묶은 단위로, 컴퓨터 메모리 주소 지정의 기본 단위입니다 (28=2562^8 = 256가지 값 표현 가능).n개의 비트가 모이면 총 2^n개의 서로 다른 정보를 표현할 수 있습니다. 특히 8비트 = 1바이트(2^8 = 256가지)와 2^10 = 1,024(1 KiB 기준)는 컴퓨터 공학 계산의 가장 중요한 기준값입니다.

2. 진법 간 상호 변환 (2진법, 8진법, 10진법, 16진법)

1. 10진수 ➔ 2진수 변환: - 정수부: 10진수를 2로 몫이 0이 될 때까지 반복해서 나누고, 나온 나머지들을 역순(아래에서 위로)으로 적습니다. 또는 2n2^n 가중치(128,64,32,16,8,4,2,1128, 64, 32, 16, 8, 4, 2, 1)의 합으로 분해하여 해당 자리에 1을 채웁니다. - 소수부: 소수 부분에 2를 반복해서 곱하며 결과의 정수 부분(0 또는 1)을 순서대로(위에서 아래로) 기록합니다 (예: 0.62510=0.5+0.125=2−1+2−3=0.10120.625_{10} = 0.5 + 0.125 = 2^{-1} + 2^{-3} = 0.101_2). 2. 2진수 ➔ 8진수 / 16진수 고속 변환: - 2진수는 자릿수가 너무 길어 사람이 읽고 쓰기 불편하므로, 23=82^3 = 8과 24=162^4 = 16의 관계를 이용해 압축 표기합니다. - 8진수(Octal) 변환: 소수점을 기준으로 2진수를 3비트씩 묶어 0∼70 \sim 7로 치환합니다. - 16진수(Hexadecimal) 변환: 소수점을 기준으로 2진수를 4비트씩 묶어 0∼90 \sim 9 및 A(10),B(11),C(12),D(13),E(14),F(15)\text{A}(10), \text{B}(11), \text{C}(12), \text{D}(13), \text{E}(14), \text{F}(15)로 치환합니다. - 예: 110101102=(1101)2(0110)2=D61611010110_2 = (1101)_2 (0110)_2 = \text{D6}_{16}, 8진수로는 (011)2(010)2(110)2=3268(011)_2 (010)_2 (110)_2 = 326_8.2진수 4자리 묶음의 가중치 '8-4-2-1'을 외워두면 10진수를 거치지 않고도 2진수와 16진수를 1초 만에 암산으로 상호 변환할 수 있습니다.

예제로 살펴보기

10진수 214를 2진수와 16진수로 각각 변환하고, 2진수 1011.01₂를 10진수로 변환하시오.
  1. 1) 214를 2의 거듭제곱 합으로 분해하면 214 = 128 + 64 + 16 + 4 + 2 = 2⁷ + 2⁶ + 2⁴ + 2² + 2¹입니다. 따라서 8비트 2진수로 나타내면 11010110₂입니다. 2) 11010110₂를 4비트씩 나누면 1101₂(8+4+1=13=D)와 0110₂(4+2=6)이므로 16진수는 0xD6(D6₁₆)입니다. 3) 1011.01₂ = 1×2³ + 0×2² + 1×2¹ + 1×2⁰ + 0×2⁻¹ + 1×2⁻² = 8 + 0 + 2 + 1 + 0 + 0.25 = 11.25₁₀입니다.
확인: 컴퓨터는 하드웨어 신호의 안정성(Noise 내성)을 위해 전압의 On/Off에 대응하는 2진수를 기본 단위로 사용한다.

3. 실무·시스템 적용 사례 및 비트 시프트 연산 포인트

- 메모리 주소와 웹 컬러 코드: - 디버거에서 확인하는 메모리 주소(0x7fff5fbff8c0), 네트워크 MAC 주소(00:1A:2B:3C:4D:5E), IPv6 주소는 모두 바이트 단위를 직관적으로 표현하기 위해 16진수를 사용합니다. - 웹 디자인의 RGB 색상 코드 #FF5733은 Red(FF = 255), Green(57 = 87), Blue(33 = 51) 각각 1바이트(8비트)씩 총 24비트 트루컬러를 16진수로 표현한 것입니다. - 비트 시프트(Bitwise Shift) 연산을 통한 고속 곱셈·나눗셈: - CPU에서 일반 곱셈·나눗셈 명령어보다 비트 이동 명령어가 훨씬 빠르게(1클럭 내외) 실행됩니다. - 왼쪽 시프트(n << k): 비트를 왼쪽으로 kk칸 밀고 빈자리를 0으로 채우며, 수학적으로 n×2kn \times 2^k과 같습니다. - 오른쪽 시프트(n >> k): 비트를 오른쪽으로 kk칸 밀며, 양수 기준 ⌊n/2k⌋\lfloor n / 2^k \rfloor (몫 연산)과 같습니다.

참고 근거와 확인 범위

설명·예제·문제 구성 및 오류 수정 책임: 프리런. 위 자료는 표시한 주제를 확인하거나 더 읽기 위한 근거이며, 외부 기관의 공식 수업이나 감수본을 뜻하지 않습니다.

참고 자료 연결 점검: 2026-11-02. 제작 방식·검수 범위와 수정 기록에서 확인 범위를 볼 수 있습니다. 오류는 상단의 의견 보내기 또는 contact@freelearn.io로 알려 주세요.

이 단원의 개념서 읽기 →