데이터 분석 관련

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진수 간의 변환법을 이해하면, 컴퓨터 내부에서 숫자가 어떻게 처리되는지 쉽게 이해할 수 있습니다.

 

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