컴퓨터공학/네트워크

2진수와 10진수 그리고 변환하는 방법

코코무 2025. 8. 19. 17:50

10진수

  • 0~9까지 10개의 숫자를 수로 표현
  • 우리가 평소 사용하는 숫자 카운팅 방식
  • 원리
    • (두 자리수부터 적용)오른쪽 끝이 9일 때: 9 → 0
    • 왼쪽 끝이 9일 때: 9 → 0(자신의 자리수는 0으로 되돌림) & 왼쪽 앞에 한 자리수를 추가
  • 예시
    • 9의 다음 수: 왼쪽 끝이 9이므로 0으로 만들고, 왼쪽 앞에 한 자리수를 추가하여 10
    • 19의 다음 수: 오른쪽 끝이 9이므로 0으로 만들고, 왼쪽 끝이 1이므로 다음 단위인 2로 바꿔주어 20
    • 99의 다음 수: 오른쪽 끝이 9이므로 0으로 만들고, 왼쪽 끝이 9이므로 자신의 자리수는 0으로 만들고 그 앞에 한 자리수를 추가하여 100
  • 각 자리는 10의 거듭제곱
    • 예시 설명
      • 573 = 5 x 100 + 7 x 10 + 3 x 1 = 5×10² + 7×10¹ + 3×10⁰(어떤 수든 0승은 1이다)

2진수

  • 0과 1 두 개의 숫자만으로 수를 표현
  • 원리
    • 오른쪽 끝이 0 → 1
    • 오른쪽 끝이 1 → 0 & 옆자리로 1 넘김
  • 예시
    • 100의 다음 수: 오른쪽 끝이 0이므로 101
    • 101의 다음 수: 오른쪽 끝이 1이므로 먼저 0으로 만들고, 옆자리로 1을 넘겨 110

16진수

  • 0
    9와 A
    F까지 16개의 숫자로 수를 표현
  • 한 자리수로 0~15를 나타낼 수 있음
  • 0~50까지 10진수와 16진수의 대응표10진수 16진수
    0 0
    1 1
    2 2
    3 3
    4 4
    5 5
    6 6
    7 7
    8 8
    9 9
    10 A
    11 B
    12 C
    13 D
    14 E
    15 F
    16 10
    17 11
    18 12
    19 13
    20 14
    21 15
    22 16
    23 17
    24 18
    25 19
    26 1A
    27 1B
    28 1C
    29 1D
    30 1E
    31 1F
    32 20
    33 21
    34 22
    35 23
    36 24
    37 25
    38 26
    39 27
    40 28
    41 29
    42 2A
    43 2B
    44 2C
    45 2D
    46 2E
    47 2F
    48 30
    49 31
    50 32

10진수 → 2진수

필요한 경우

  • 서브넷 마스크 계산
  • 예: 255.255.255.240을 2진수로 바꿔야 몇 비트가 네트워크/호스트인지 알 수 있음
  • IP 주소와 서브넷 비교
  • 어떤 IP가 같은 네트워크에 속하는지 판별하려면 10진수를 2진수로 바꿔 AND 연산해야 함
  • 브로드캐스트 주소, 네트워크 주소 계산
  • 호스트 비트 판별이 전부 2진수에서 이뤄짐

방법: “255.255.255.0을 2진수로 바꿔보자”

  • 첫 번째: 2진수 8자리의 자리값으로 구하기
    • IPv4는 점으로 나뉜 4개의 10진수(0~255)로 되어 있고, 각 칸(옥텟)은 8비트( WHY? 2진수 기준으로 한 개의 숫자당 1비트 차지, 점을 기준으로 한 칸에 8개의 자리수가 됨)
    • 때문에 10진수 상태인 각 칸을 2진수 8자리로 바꾸면 됨
    • 128 64 32 16 8 4 2 1
    • 해당 10진수에서 위 값을 큰 것부터 뺄 수 있으면 1, 못 빼면 0을 적음(일명 가중치/자리값 방법)
    1. 255를 위 자리값으로 깎아보자(첫 번째~세 번째 옥텟 동일):
      • 255 ≥ 128 → 1, 남은 값 127
      • 127 ≥ 64 → 1, 남은 값 63
      • 63 ≥ 32 → 1, 남은 값 31
      • 31 ≥ 16 → 1, 남은 값 15
      • 15 ≥ 8 → 1, 남은 값 7
      • 7 ≥ 4 → 1, 남은 값 3
      • 3 ≥ 2 → 1, 남은 값 1
      • 1 ≥ 1 → 1, 남은 값 0⇒ 결과 비트: 11111111
    2. 0(네 번째 옥텟)
      • 0 ≥ 128? 아니오 → 0
      • 0 ≥ 64? 아니오 → 0
      • 0 ≥ 1? 아니오 → 0⇒ 결과 비트: 00000000
    3. 0은 어느 자리값도 뺄 수 없다:
    4. 옥텟을 이어 쓰면 11111111.11111111.11111111.00000000
  • 두 번째: 2로 나누기
    • 255 ÷ 2 = 127 …1
    • 127 ÷ 2 = 63 …1
    • 63 ÷ 2 = 31 …1
    • 31 ÷ 2 = 15…1
    • 15 ÷ 2 = 7 …1
    • 7 ÷ 2 = 3 …1
    • 3 ÷ 2 = 1 …1
    ⇒ 결과 비트: (밑에서 위로 역순 읽기) 11111111

2진수 → 10진수

필요한 경우

  • IP 주소 해석
  • IP나 서브넷 마스크를 2진수로 표현한 뒤, 사람이 이해하기 위해 다시 10진수로 변환 예: 11000000.10101000.00000001.00000001 → 192.168.1.1
  • 네트워크 주소 계산
  • 비트연산으로 나온 결과는 2진수라, 최종적으로는 10진수로 변환해서 네트워크 주소, 브로드캐스트 주소를 확인해야 함

방법

  • 111111111= 128 + 64 + 32 + 16 + 8 + 4 + 2 + 1
  • = 255
  • 1×2⁷ + 1×2⁶ + 1×2⁵ + 1×2⁴ + 1×2³ + 1×2² + 1×2¹ + 1×2⁰
  • 2의 0승부터 포함하므로 2진수의 자리수에서 1을 뺀 만큼부터 거듭제곱을 시작한다.
    • 11111111 은 8자리이므로 2의 7승부터 시작