진법과 진법 변환

10진법, 2진법, 8진법, 16진법의 원리를 살펴보고 변환 과정을 직접 확인합니다.

01

진법의 기초

  • 10진법은 0부터 9까지 열 개의 숫자를 사용하며, 왼쪽으로 한 자리 이동할 때마다 자릿값이 10배가 됩니다. 예: \(123=1\times10^2+2\times10^1+3\times10^0\)
  • 2진법은 0과 1만 사용하며, 각 자리는 2의 거듭제곱을 뜻합니다. 예: \(101_{(2)}=1\times2^2+0\times2^1+1\times2^0=5\)
  • 소수 부분의 자릿값은 기준이 되는 수를 음의 지수로 나타냅니다. 예: \(0.101_{(2)}=1\times2^{-1}+0\times2^{-2}+1\times2^{-3}=0.625\)

위치 기수법: 같은 숫자라도 놓인 위치에 따라 값이 달라지는 표현 방식입니다. 진법의 밑을 \(b\)라고 하면 각 자릿값은 \(b^0,b^1,b^2,\ldots\)로 정해집니다.

02

진법 변환 실험실

값을 입력하면 결과와 계산 과정을 함께 표시합니다. 정수 변환은 0부터 4,294,967,295까지 지원합니다.

계산 과정
값을 입력하면 변환 과정이 표시됩니다.
03

컴퓨터와 2진법

컴퓨터는 왜 2진법을 사용할까?

디지털 회로는 전압의 범위를 두 상태로 나누어 0과 1로 처리합니다. 두 상태를 분명하게 구분하면 잡음이 있어도 값을 안정적으로 판별할 수 있고, 논리 회로를 단순하게 구성할 수 있습니다.

생각해보기: 16진수 한 자리는 2진수 네 자리와 대응합니다. \(2^3=8\)이라는 사실을 이용하면 8진수 한 자리는 2진수 몇 자리와 대응할까요?

비트 연산이 사용되는 곳

  • 상태 저장: 하나의 정수 안에 여러 개의 켜짐·꺼짐 상태를 비트별로 저장할 수 있습니다.
  • 마스킹: 색상값, 네트워크 주소, 장치 레지스터처럼 데이터의 특정 비트만 선택하거나 변경할 수 있습니다.
  • 비트 이동: 이진수의 자리를 이동하여 2의 거듭제곱을 곱하거나 나누는 원리를 구현할 수 있습니다.

비트 연산이 모든 상황에서 일반 산술 연산보다 항상 빠른 것은 아닙니다. 프로그램에서는 의미가 분명하고 실제로 비트 단위 처리가 필요한 경우에 사용합니다.

8비트 비트 연산 실험

0부터 255까지의 두 수를 입력하여 AND, OR, XOR, NOT, 비트 이동 결과를 비교합니다.

비트 연산 결과
04

컴퓨터는 어떻게 덧셈을 할까?

XOR와 AND로 만드는 덧셈

  1. XOR: 받아올림을 제외한 각 자리의 합을 구합니다. 두 비트가 다르면 1, 같으면 0입니다.
  2. AND와 왼쪽 이동: 두 비트가 모두 1인 자리를 찾고, 그 결과를 왼쪽으로 한 칸 옮겨 받아올림을 만듭니다.
  3. 반복: 받아올림이 없어질 때까지 두 과정을 반복합니다.
덧셈 과정
두 수를 입력하고 계산 버튼을 누르세요.

다른 산술 연산

  • 뺄셈: 음수를 2의 보수로 표현하면 덧셈 회로를 이용해 뺄셈을 처리할 수 있습니다.
  • 곱셈: 기본 원리는 비트 이동과 덧셈의 조합이며, 실제 프로세서에서는 더 빠른 여러 알고리즘과 전용 회로를 사용합니다.
  • 나눗셈: 비트 이동과 비교·뺄셈을 조합한 방식이 기본 원리이며, 실제 구현에서는 다양한 최적화 알고리즘을 사용합니다.
05