MCP로 연결 →

계산 입력

공식

광고

결과

2의 보수
01001011
입력 유형 decimal
원본 입력값 181
비트 폭 8비트
2진수 표현 10110101
1의 보수 01001010
2의 보수 01001011
원본 10진수 (부호 없음) 181
원본 10진수 (부호 있음) -75
2의 보수 10진수 75
원본 16진수 0xB5
부호 있는 16진수 0xB5
2의 보수 16진수 0x4B

2의 보수 계산기란?

2의 보수 계산기는 10진수, 2진수, 16진수 사이를 변환하면서 컴퓨터 내부에서 음수가 어떻게 표현되는지 보여 주는 도구입니다. 2의 보수(two's complement)는 사실상 모든 현대 프로세서가 부호 있는 정수를 저장할 때 사용하는 표준 방식입니다. 그래서 이 개념은 프로그래머, 전자공학 전공생, 그리고 디지털 논리를 다루는 모든 사람에게 꼭 필요합니다. 이 계산기에 원하는 진법으로 숫자를 입력하고 비트 폭(8·16·32비트)을 고르면, 2의 보수 표현과 함께 그에 해당하는 10진수 값을 바로 확인할 수 있습니다.

계산기 사용 방법

  • 입력란에 숫자를 적습니다 — 10진수, 2진수, 16진수를 모두 받습니다.
  • 필요하면 입력값의 진법을 선택합니다.
  • 비트 폭을 고릅니다: 8비트, 16비트, 32비트.
  • 결과를 확인합니다 — 2진수, 16진수, 그리고 부호 있는 10진수 값이 자동으로 표시됩니다.

비트 폭이 중요한 이유는 저장 가능한 값의 범위를 결정하기 때문입니다. 예를 들어 8비트 부호 있는 정수는 -128부터 127까지, 16비트는 -32,768부터 32,767까지 표현할 수 있습니다.

공식 풀이

2진수의 2의 보수를 구하는 방법은 두 단계입니다.

$$\text{Twos Complement} = \left(\sim \text{Number}_{\,2}\right) + 1 \pmod{2^{\text{Bit Width}}}$$

  • 모든 비트를 반전합니다(0은 1로, 1은 0으로 바꿉니다). 이것이 1의 보수입니다.
  • 그 결과에 1을 더합니다.

가장 왼쪽 비트는 부호 비트 역할을 합니다. 0이면 양수, 1이면 음수입니다. 음의 10진수를 2의 보수로 바꿀 때는 \(2^{n} + \text{값}\) 공식을 쓰며, 여기서 \(n\)은 비트 폭입니다.

광고
비트를 반전하고 1을 더해 2의 보수를 구하는 2단계 다이어그램
2의 보수는 모든 비트를 반전한 뒤 1을 더해 구합니다.

예제로 따라 하기

-5를 8비트 2의 보수로 변환해 보겠습니다.

  • 먼저 +5를 2진수로 나타냅니다: 0000 0101.
  • 비트를 반전합니다: 1111 1010.
  • 1을 더합니다: 1111 1011.

따라서 -5는 1111 1011로 저장되며, 이는 16진수로 FB입니다. 확인해 보면 251(부호 없는 값)에서 256을 빼면 -5가 됩니다: $$251 - 256 = -5$$

부호 있는 8비트 범위가 양수에서 음수로 순환하는 원형 다이어그램
부호 있는 8비트 값은 순환하며, 상위 절반이 음수에 대응됩니다.

부호 있는 정수 범위 (비트 너비별)

2의 보수(Two's complement)는 컴퓨터에서 부호 있는 정수를 나타내는 표준 방식입니다. 주어진 비트 너비 \(n\)에 대해, 한 개의 비트가 부호 비트로 작용하므로 나타낼 수 있는 부호 있는 정수의 범위는 \(-2^{n-1}\)부터 \(2^{n-1}-1\)까지이며, 동일한 비트를 부호 없는 방식으로 해석하면 \(0\)부터 \(2^{n}-1\)까지를 다룹니다. 모든 산술 연산은 \(2^{n}\) 모듈로 래핑됩니다.

비트 너비 \(n\) 부호 있는 최소값 \(-2^{n-1}\) 부호 있는 최대값 \(2^{n-1}-1\) 부호 없는 최대값 \(2^{n}-1\) 모듈러스 \(2^{n}\)
8 -128 127 255 256
16 -32,768 32,767 65,535 65,536
32 -2,147,483,648 2,147,483,647 4,294,967,295 4,294,967,296
64 -9,223,372,036,854,775,808 9,223,372,036,854,775,807 18,446,744,073,709,551,615 18,446,744,073,709,551,616

예를 들어, 10진법 5를 8비트 형식으로 2의 보수 표현하면 부호 없는 바이트로 읽을 때 251이 되며, 이는 부호 있는 값으로 \(-5\)를 나타냅니다.

일반적인 8비트 값의 10진–2진–16진 참고표

다음 표는 대표적인 부호 있는 10진 값을 8비트 2의 보수 2진 및 16진 형식으로 매핑합니다. 음수는 최상위 비트가 1로 설정되어 있습니다. 값을 부정하려면 8개 비트를 모두 반전하고 1을 더합니다.

부호 있는 10진 8비트 2진 16진 부호 없는 값
-128 1000 0000 0x80 128
-64 1100 0000 0xC0 192
-5 1111 1011 0xFB 251
-1 1111 1111 0xFF 255
0 0000 0000 0x00 0
1 0000 0001 0x01 1
5 0000 0101 0x05 5
64 0100 0000 0x40 64
127 0111 1111 0x7F 127

2진 형식을 독립적으로 확인하려면, 8비트 패턴 11111011을 10진으로 변환하면 251이 됩니다 (부호 있는 방식으로는 \(-5\)로 해석됨).

광고

핵심 용어 및 정의

비트 너비
정수를 저장하는 데 사용되는 이진 숫자의 개수(일반적으로 8, 16, 32 또는 64). 모듈러스 \(2^{n}\)을 정하므로 나타낼 수 있는 값의 범위를 결정합니다.
부호 비트
부호 있는 수가 음수(1) 또는 음이 아닌 수(0)인지를 나타내는 단일 비트. 2의 보수에서는 가장 높은 자릿수의 비트입니다.
최상위 비트(MSB)
2진 수에서 가장 왼쪽에 위치한 최고 값의 비트. 부호 있는 2의 보수 값에서 MSB는 부호 비트로도 작용합니다.
1의 보수
수의 비트 반전 — 모든 0이 1이 되고 모든 1이 0이 됨(\(\overline{B}\)). 2의 보수를 만들기 위해 1을 더하기 전의 중간 단계입니다.
2의 보수
주요 부호 있는 정수 인코딩: 값을 부정하려면 모든 비트를 반전하고 1을 더함, 즉 \(\overline{B}+1 \pmod{2^{n}}\). 0의 표현이 유일하며 동일한 하드웨어로 부호 있는 수와 부호 없는 수를 모두 더할 수 있습니다.
오버플로우/래핑
결과가 비트 너비의 나타낼 수 있는 범위를 초과할 때 발생하는 현상; 값은 \(2^{n}\) 모듈로 래핑됩니다. 예를 들어, 8비트 최대값 127에 1을 더하면 -128로 래핑됩니다.
부호 있는 정수 대 부호 없는 정수
부호 있는 정수는 2의 보수를 사용하여 음수를 나타낼 수 있습니다(범위: \(-2^{n-1}\)부터 \(2^{n-1}-1\)); 부호 없는 정수는 모든 비트 패턴을 음이 아닌 수로 취급합니다(범위: \(0\)부터 \(2^{n}-1\)). 비트는 동일하며 — 해석만 다릅니다.

자주 묻는 질문

컴퓨터는 왜 2의 보수를 사용하나요? 덧셈과 뺄셈을 같은 회로로 처리할 수 있고, 부호-크기 방식이나 1의 보수와 달리 0의 표현이 하나뿐이기 때문입니다.

숫자가 비트 폭보다 크면 어떻게 되나요? 값이 오버플로(overflow)되어 순환하면서 예상치 못한 결과가 나옵니다. 이를 피하려면 더 넓은 비트 폭을 선택하세요.

다시 일반 10진수로 어떻게 바꾸나요? 부호 비트가 1이면 2의 보수를 한 번 더 구한 뒤 음수 부호를 붙입니다. 0이면 그대로 일반 2진수로 읽으면 됩니다.

최종 업데이트: