2의 보수 계산기란?
2의 보수는 컴퓨터가 부호 있는 정수를 저장하는 표준 방식입니다. 이 계산기는 임의의 10진수를 선택한 비트 폭(4, 8, 16, 32비트)에 맞춰 2의 보수 2진수로 변환하고, 해당 비트 패턴을 부호 없는 값(unsigned)과 부호 있는 값(signed) 두 가지로 함께 보여줍니다.
사용 방법
양수든 음수든 10진수를 입력한 뒤 비트 폭을 선택하세요. 계산기는 입력값을 \(2^n\)으로 나눈 나머지로 줄여, CPU가 실제로 저장하는 것과 동일한 비트 패턴을 만들어 냅니다. 또한 같은 패턴이 부호 있는 값으로는 얼마로 해석되는지도 알려 주므로, 변환이 제대로 됐는지(왕복 변환)를 바로 검증할 수 있습니다.
공식 자세히 보기
n비트 필드에서 부호 없는 표현은 $$u = ((x \bmod 2^n) + 2^n) \bmod 2^n$$ 으로 구합니다. 이 식은 음수를 한 바퀴 돌려 양수 범위로 옮겨 줍니다. 예를 들어 8비트에서 −5는 \(256 - 5 = 251\)이 되고, 이를 2진수로 나타내면 11111011입니다. 반대로 비트 패턴을 부호 있는 값으로 해석하려면 최상위 비트(MSB)를 확인합니다. MSB가 1이면(즉 \(u \geq 2^{n-1}\)) 값은 \(u - 2^n\)이고, 그렇지 않으면 그냥 \(u\) 입니다. 음수를 만드는 또 다른 방법은 모든 비트를 반전한 뒤 1을 더하는 것입니다: \(\sim x + 1\).
예제로 풀어 보기
−5를 8비트 2의 보수로 변환해 봅시다. 1단계: \(2^8 = 256\). 2단계: $$u = ((-5 \bmod 256) + 256) \bmod 256 = 251.$$ 3단계: 251을 2진수로 나타내면 11111011입니다. MSB가 1이므로 부호 있는 값은 \(251 - 256 = -5\)가 되어 변환이 정확함을 확인할 수 있습니다.
자주 묻는 질문
숫자가 비트 폭보다 크면 어떻게 되나요? 실제 하드웨어와 똑같이 \(2^n\)을 기준으로 한 바퀴 돌며(오버플로) 잘립니다. 예를 들어 8비트에서 300은 \(300 - 256 = 44\)가 됩니다.
부호 없는 값과 부호 있는 값이 다른 이유는 무엇인가요? 똑같은 비트라도 두 가지 방식으로 읽을 수 있기 때문입니다. 부호 없는 해석은 모든 비트를 양수로 읽고, 부호 있는 해석은 최상위 비트를 음수 가중치로 취급합니다.
64비트도 지원하나요? 결과를 안전한 정밀도 범위 안에 유지하기 위해 이 계산기는 흔히 쓰이는 최대 32비트까지 지원합니다.