누구나 쉽게 배우는 진수 - 3장. 2진수(Binary) 이해하기

2025. 3. 28. 12:45소프트웨어/기초

 

✅ 3장. 2진수(Binary) 이해하기


📌 2진수란?

2진수(Binary)0과 1 두 가지 숫자만 사용하는 수 체계입니다.
기수(Base)가 2이기 때문에 사용할 수 있는 숫자는 단 두 개: 0과 1입니다.


💡 왜 2진수가 중요할까요?

컴퓨터는 전기 신호(전류의 흐름 유무)로 작동합니다.

  • 전기가 흐르면 → 1
  • 전기가 흐르지 않으면 → 0

이처럼 컴퓨터는 전기를 켜고(1), 끄는(0) 방식으로 모든 데이터를 처리하기 때문에,
컴퓨터 내부에서는 모든 정보가 2진수로 저장되고 계산됩니다.


🔢 예시: 10진수 5 → 2진수 변환

10진수 5를 2진수로 변환하려면, 2로 나누는 과정을 반복하고 나머지를 위에서 아래로 기록합니다.

변환 표:

단계 나눗셈 나머지
5 ÷ 2 2 1
2 ÷ 2 1 0
1 ÷ 2 0 1

나머지를 아래에서 위로 읽으면: 1 0 1 → 2진수 101

🔎 Tip: 이처럼 10진수를 2진수로 바꿀 땐, 나누고 나머지를 기록하며 역순으로 읽는다는 것을 기억하세요.


🔁 2진수 ↔ 10진수 변환 방법

✅ 1) 10진수 → 2진수

  1. 2로 계속 나눔
  2. 나머지를 위에서 아래 방향으로 표에 적음
  3. 나머지를 아래에서 위로 읽으면 2진수

✅ 2) 2진수 → 10진수

각 자릿수에 2의 거듭제곱(2ⁿ)을 곱한 값을 더합니다.
오른쪽 끝이 0번 자리입니다.

예: 1011₂ → 10진수 변환

자리 위치 계산식 결과
3 1 1 × 2³ = 8 8
2 0 0 × 2² = 0 0
1 1 1 × 2¹ = 2 2
0 1 1 × 2⁰ = 1 1
    합계 11

🧩 비트와 바이트의 개념

용어 설명
Bit (binary digit) 2진수의 1자리(0 또는 1)
Byte 8비트 = 1바이트 (컴퓨터 저장의 최소 단위)

예를 들어 00001010처럼 8자리 2진수는 1바이트입니다.
→ 00001010₂ = 10₁₀

💡 컴퓨터의 메모리, 파일 크기, 데이터 단위는 모두 바이트를 기준으로 측정됩니다.


🧑‍💻 프로그래밍에서의 2진수 표기법

다양한 언어에서는 2진수라는 것을 명확히 구분하기 위해 접두사를 사용합니다.

언어 표기 예시 설명
Python 0b1010 0b는 2진수 접두사
JavaScript 0b1010 ES6 이상에서 지원
C (표준) 지원 X 직접 2진수 리터럴 없음
C (GCC 확장) 0b1010 GCC 컴파일러에서만 지원됨

⚠️ C언어 표준에는 2진수 리터럴이 없으며, 대신 8진수(0)나 16진수(0x)를 더 자주 사용합니다.


🧠 보너스: 음수 표현 방식 (기초 소개)

컴퓨터는 음수를 표현할 때 2의 보수법을 사용합니다.
이 내용은 [보너스 개념] 장에서 더 자세히 다루지만, 간단히 말하면:

  • +5 → 00000101
  • -5 → 11111011 (2의 보수)

이는 연산을 단순화하고 하드웨어 구현을 효율적으로 하기 위한 방법입니다.


📝 연습문제

Q1. 10진수 13을 2진수로 변환하세요.
Q2. 2진수 1101을 10진수로 변환하세요.
Q3. 8비트로 표현된 2진수 00001111은 어떤 10진수일까요?

✅ 정답:

  • Q1 → 1101
  • Q2 → 8 + 4 + 0 + 1 = 13
  • Q3 → 8 + 4 + 2 + 1 = 15

🔗 변환 계산기 링크

실제 변환 과정을 자동으로 확인하고, 입력값을 바꿔 연습해볼 수 있어요!


📊 시각 자료: 2진수 자릿값 시각화 (텍스트형)

2진수:   1   0   1   1
위치:   3   2   1   0
        ↓   ↓   ↓   ↓
값:     8 + 0 + 2 + 1 = 11

👉 각 자리의 지수(2ⁿ) 개념을 익히면 진수 변환이 한결 쉬워집니다!


📘 요약

항목 내용
2진수 정의 0과 1만 사용하는 수 체계
변환 원리 나눗셈과 자리값 계산
프로그래밍 표기 0b 접두사 사용
관련 개념 비트, 바이트, 2의 보수
실습 추천 변환 계산기 + 연습문제 포함