이진수와 진법변환 (Binary Number, Base Conversion)

컴퓨터과학·AI
한 줄 정의: 숫자를 0과 1 두 가지 기호만으로 표현하는 이진법과, 십진수·이진수·십육진수 등 서로 다른 진법 사이에서 값을 바꾸는 방법을 말합니다.

쉽게 풀면

전등 스위치를 떠올려 봅시다. 스위치는 "켜짐"과 "꺼짐" 두 가지 상태만 가질 수 있습니다. 컴퓨터 내부의 전기 신호도 이와 비슷하게 "전류가 흐름(1)"과 "흐르지 않음(0)" 두 가지 상태만 안정적으로 구분할 수 있습니다. 그래서 컴퓨터는 우리가 익숙한 십진수(0~9) 대신, 0과 1만 사용하는 이진수로 모든 숫자와 문자를 표현합니다. 예를 들어 십진수 5는 이진수로 101입니다. 이렇게 십진수를 이진수로, 또는 이진수를 십육진수(0~9와 A~F)로 서로 바꾸는 계산 과정을 진법변환이라고 합니다.

왜 중요한가

이진수와 진법변환은 컴퓨터가 정보를 저장하고 연산하는 가장 밑바닥 원리이기 때문에, 디지털 논리 회로 설계·컴퓨터 구조·임베디드 시스템 논문에서 배경 개념으로 빠지지 않고 등장합니다. 특히 부호 있는 정수 표현, 부동소수점 인코딩, 오류 검출 코드 등 상위 주제들은 모두 값이 이진수로 어떻게 저장되는지에 대한 이해를 전제로 합니다. 또한 메모리 주소나 색상값을 다룰 때 십육진수 표기를 널리 사용하기 때문에, 데이터 구조나 네트워크 프로토콜을 다루는 논문에서도 진법변환은 자연스럽게 함께 언급됩니다.

논문에서는 이렇게 쓰입니다

"본 연구에서 설계한 디지털 회로는 입력된 십진수를 이진수로 변환한 뒤, 각 비트에 대해 논리 연산을 수행하는 구조로 되어 있다."

이 문장은 회로나 프로그램이 사람이 다루는 십진수 값을 컴퓨터가 처리할 수 있는 이진수 형태로 먼저 바꾼 뒤 계산을 진행한다는 뜻입니다. 컴퓨터공학이나 전자공학 논문에서는 이러한 기초 개념을 배경지식으로 짧게 언급한 뒤 본 주제로 넘어가는 경우가 많습니다.

"제안하는 임베디드 펌웨어는 센서로부터 수집한 값을 16진수 형태로 메모리에 기록하여 디버깅 시 가독성을 높였다."

임베디드 시스템 분야에서는 메모리나 레지스터 값을 그대로 이진수로 표기하면 자릿수가 너무 길어지므로, 이진수 네 자리를 한 글자로 압축할 수 있는 16진수를 대신 사용해 값을 사람이 읽기 쉽게 표현한다는 의미입니다.

"본 네트워크 프로토콜에서는 IP 주소를 8비트 단위의 이진수 네 묶음으로 분해한 뒤, 각 묶음을 십진수로 변환하여 전송 헤더에 기록한다."

네트워크 분야 논문에서는 주소 체계처럼 이진수로 저장된 값을 사람이 이해하기 쉬운 십진수 표기로 바꾸어 다루는 경우가 많으며, 이 문장은 그러한 변환 과정을 설명하고 있습니다.

조금 더 깊게 보면

진법변환을 실제로 계산할 때는 십진수를 이진수로 바꿀 때 나머지를 구해가며 몫이 0이 될 때까지 2로 나누는 방식이 널리 쓰이고, 반대로 이진수를 십진수로 바꿀 때는 각 자리의 값에 2의 거듭제곱을 곱해 더하는 방식이 쓰입니다. 논문에서는 이 과정이 하드웨어로 구현될 때 덧셈기와 자리이동(shift) 연산의 조합으로 처리된다는 점도 함께 언급되곤 합니다. 또한 8진수나 16진수는 각각 이진수 3자리, 4자리와 정확히 대응되기 때문에 변환이 단순하지만, 십진수와 이진수 사이의 변환은 이러한 배수 관계가 없어 상대적으로 더 많은 계산 단계를 필요로 합니다.

주의할 점

진법변환은 이진수와 십진수 사이에서만 이루어지는 것이 아니라, 8진수(0~7)나 16진수(0~9, A~F)로도 자유롭게 바뀔 수 있습니다. 특히 16진수는 이진수 4자리를 한 글자로 줄여 표현할 수 있어 색상 코드나 메모리 주소 표기에 자주 쓰입니다. 이진수로 표현된 값들에 대한 참/거짓 판단은 논리 연산 AND/OR/NOT을 통해 이루어집니다.

관련 용어