데이터 분석

2진수와 10진수 : 개념부터 변환 방법, 그리고 2진수의 음수 표현

cjangela 2025. 1. 31. 01:22

컴퓨터가 이해하는 숫자는 우리가 일상에서 사용하는 숫자와 다릅니다. 우리는 일반적으로 10진수(Decimal)를 사용하지만, 컴퓨터는 2진수(Binary)로 데이터를 처리합니다. 이번 글에서는 2진수와 10진수 개념을 알아보고, 변환 방법과 음수 표현 방식까지 살펴보겠습니다.

1. 2진수(binary)란?

  • 2진수는 '0'과 '1'의 두 가지 숫자로 이루어진 수 체계입니다. 컴퓨터 내부에서는 전압이 켜짐(1)과 꺼짐(0)으로 데이터를 저장하고 처리하기 때문에, 2진수는 컴퓨터에서 기본적으로 사용하는 숫자 체계입니다. 우리가 사용하는 텍스트, 이미지, 소리 등의 모든 데이터는 결국 2진수로 변환되어 저장되고 연산되는 것입니다.
  • 2진수는 지수 표현법을 사용하여, 각 자리의 값이 2의 거듭제곱 형태로 나타납니다.

2. 10진수(decimal)란?

  • 10진수는 우리가 일반적으로 일상에서 사용하는 숫자 체계입니다. 0부터 9까지 총 10개의 숫자로 구성되며, 자리올림을 통해 큰 수를 표현합니다. 예를 들어, 9 다음에는 10이 오고, 99 다음에는 100이 오듯이, 각 자리의 값은 10의 거듭제곱을 기반으로 구성됩니다.
  • 컴퓨터는 기본적으로 2진수를 사용하지만, 우리가 사용하는 대부분의 숫자는 10진수로 표현됩니다. 따라서, 10진수와 2진수 간의 변환 방법을 익히는 것이 중요합니다.

3. 2진수-10진수 변환 방법

1) 2진수를 10진수로 변환하는 방법

  • 2진수를 10진수로 변환하려면 각 자리의 숫자에 2의 거듭제곱을 곱한 후 더해주면 됩니다.
  • ex) 1101을 10진수로 변환해 주세요.
1101 (2진수)
= 2³×1 + 2²×1 + 2¹×0 + 2⁰×1
= 13 (10진수)
  • 이와 같이 각 자리수를 2의 거듭제곱으로 변환한 후, 각 자리의 2진수 값을 곱하는 방식으로 쉽게 변환할 수 있습니다.

2) 10진수를 2진수로 변환하는 방법

  • 정수인 10진수를 2진수로 변환하려면, 10진수를 2로 나누면서 나머지를 기록하고, 마지막에 나머지를 역순으로 정렬하면 됩니다.
  • ex) 13을 2진수로 변환해 주세요.

10진수에서 2진수로 변환하는 풀이 과정

  • 화살표 방향으로 계산하면 1101이라는 2진수 값이 나오는 것을 알 수 있습니다.
반응형

4. 2진수의 음수 표현 방법

  • 컴퓨터는 정수뿐만 아니라 음수도 처리해야 합니다. 하지만 2진수에는 '-' 기호가 없기 때문에 특정 규칙을 사용하여 음수를 표현해야 합니다. 대표적인 방법으로는 부호화 절댓값(Sign-Magnitude), 1의 보수(1's Complement), 2의 보수(2's Complement) 방법이 있습니다.

1) 부호화 절댓값(Sign-Magnitude)

  • 기존의 양수의 비트를 반전시킨 후 나온 가장 첫 번째 비트가 부호 비트입니다.
  • 부호 비트는 (총 32개의 비트 중) 첫 번째 비트, 즉 가장 왼쪽에 위치한 비트를 의미합니다. 부호 비트가 0이면 양수이고, 1이면 음수를 나타냅니다.
  • 예를 들어, 13을 부호화 절댓값으로 표현하면 다음과 같습니다.
+5 = 00001101
-5 = 10001101
  • 하지만 이 방식은 0을 두 가지(‘00000000’과 ‘10000000’)로 표현하는 문제가 있으며, 연산 과정에서도 복잡성이 증가하는 단점이 있습니다.

2) 1의 보수(1's Complement)

  • 부호화 절댓값에서 부호 비트를 제외한 나머지의 비트값을 반대로 표현하는 방법입니다.
  • 즉 모든 비트를 반전(0 → 1, 1 → 0)하여 음수를 표현하는 방법입니다.
  • 13의 1의 보수를 표현하면 다음과 같습니다.
a = 13 0 1 1 0 1
a의 음수 1 (부호화 절댓값) 1 1 0 1
1의 보수 1 0 0 1 0
13 → 01101
-13 → 10010 (1의 보수)

3) 2의 보수(2's Complement)

  • 2의 보수는 1의 보수 방식에 1을 추가로 더하는 방법입니다. 이 방식은 0을 유일하게 표현할 수 있으며, 연산이 간단해지는 장점이 있습니다.
  • 13의 2의 보수를 구하는 과정은 다음과 같습니다. 
a = 13 0 1 1 0 1
a의 음수 1 (부호화 절댓값) 1 1 0 1
1의 보수 1 0 0 1 0
  (+1)
2의 보수 1 0 0 1 1
13 → 01101
1의 보수 → 10010
2의 보수 → 10011 (1을 더함)
  • 따라서, -13의 2의 보수 표현은 '10011'이 됩니다.
  • 현재 컴퓨터는 대부분 2의 보수 방식을 사용하여 음수를 표현합니다. 덧셈과 뺄셈 연산을 동일한 방식으로 수행할 수 있어 계산이 간단해지기 때문입니다.  

이번 글에서는 2진수와 10진수의 개념, 변환 방법, 그리고 2진수의 음수 표현 방식까지 자세히 살펴보았습니다. 2진수와 10진수 간의 변환법을 이해하면, 컴퓨터 내부에서 숫자가 어떻게 처리되는지 쉽게 이해할 수 있습니다.

 

파이썬을 비롯한 프로그래밍에서 비트 연산을 다룰 때에도 이 개념이 필수적이므로, 꾸준히 연습하면서 익혀두면 많은 도움이 될 것입니다. 감사합니다:-)