변환

2의 보수 계산기

설정
초기화
결과 공유
저장
임베드
버그 신고

계산기 공유

무료 계산기를 당신의 웹사이트에 추가하세요

출처

유효한 URL을 입력하세요. HTTPS URL만 지원됩니다.

스타일

입력란 테두리 포커스 색상, 스위치박스 체크된 색상, 선택 항목에 대한 호버 색상 등.

고급

이용 약관에 동의해주세요.

미리보기

계산기 저장

계산기 설정

허용 범위 내의 값을 입력해 주세요.

허용 범위 내의 값을 입력해 주세요.

허용 범위 내의 값을 입력해 주세요.

허용 범위 내의 값을 입력해 주세요.

계산기 공유

2의 보수란?

2의 보수는 컴퓨터가 고정된 비트 수를 사용하여 부호 있는 정수 — 양수 또는 음수가 될 수 있는 숫자 — 를 저장하는 표준 방식입니다. 음의 부호를 위한 별도의 기호를 따로 두는 대신, 음수를 부호에 대한 특별한 처리 없이 일반적인 이진 덧셈이 그대로 작동하도록 인코딩합니다. 거의 모든 현대 CPU가 이 방식으로 정수를 표현합니다.

이 계산기는 십진 정수와 비트 폭(8, 16 또는 32비트)을 받아서 그 2의 보수 패턴을 이진과 16진으로 모두 보여줍니다.

어떻게 작동하나요?

선택한 폭 ww 비트에 대해, 각 값은 부호 없는 비트 패턴으로 저장됩니다:

  • 숫자 nn음이 아니면, 그 패턴은 단순히 nn 의 이진수를 앞에 0을 채워 ww 비트로 만든 것입니다.
  • 숫자 nn음수이면, 그 패턴은 2w+n2^w + n 의 이진수입니다.

두 번째 경우에는 nn 이 음수이므로 2w+n2^w + n2w2^w 보다 작은 양수가 되어 항상 ww 비트에 들어맞습니다. 최상위(가장 왼쪽) 비트는 모든 음수에 대해 11 이 되고 음이 아닌 모든 수에 대해 00 이 됩니다 — 그 비트가 부호 역할을 합니다.

공식

pattern(n)={nif n02w+nif n<0\text{pattern}(n) = \begin{cases} n & \text{if } n \ge 0 \\ 2^{w} + n & \text{if } n < 0 \end{cases}

그런 다음 결과는 정확히 ww 개의 이진 숫자(또는 w/4w/4 개의 16진 숫자)로 쓰입니다.

풀이 예제

예제 1: 양수

n=5n = 588 비트로 인코딩합니다. 505 \ge 0 이므로 패턴은 단순히 55 를 이진수로 나타내어 여덟 자리로 채운 것입니다:

5000001012=0x055 \rightarrow 00000101_2 = \text{0x05}

예제 2: 음의 1

n=1n = -188 비트로 인코딩합니다. 1<0-1 < 0 이므로 28+(1)=2561=2552^8 + (-1) = 256 - 1 = 255 를 계산합니다:

255111111112=0xFF255 \rightarrow 11111111_2 = \text{0xFF}

음의 1은 폭에 상관없이 항상 끊김 없는 1의 행입니다.

예제 3: 음의 5

n=5n = -588 비트로 인코딩합니다. 28+(5)=2565=2512^8 + (-5) = 256 - 5 = 251 을 계산합니다:

251111110112=0xFB251 \rightarrow 11111011_2 = \text{0xFB}

참조 표 (8비트)

십진수2의 보수 이진수16진수
5000001010x05
0000000000x00
-1111111110xFF
-5111110110xFB
127011111110x7F
-128100000000x80

참고 사항

  • 88 비트 부호 있는 정수는 128-128 부터 127127 까지의 범위를 다루고, 1616 비트는 32,768-32{,}768 부터 32,76732{,}767 까지, 3232 비트는 대략 ±2.1\pm 2.1 십억을 다룹니다. 선택한 범위를 벗어난 값은 2w2^w 로 나눈 나머지(모듈로)로 순환합니다.
  • 선행 비트는 부호입니다: 00 은 음이 아닌 수를, 11 은 음수를 나타냅니다.
  • 부호 비트 없이 일반적인 음이 아닌 수를 이진수로 변환하려면 소수에서 이진수 변환기를 사용하고, 다른 진법은 일반 진법 변환기를 사용하세요.

자주 묻는 질문

2의 보수에서 -1은 무엇인가요?

어떤 폭에서든 모두 1입니다: 8비트의 경우 11111111211111111_2 (0xFF), 16비트의 경우 111111111111111121111111111111111_2 (0xFFFF), 등등.

음수의 2의 보수를 손으로 어떻게 구하나요?

숫자의 크기를 이진수로 쓰고, 모든 비트를 뒤집은 다음, 1을 더합니다. 8비트에서 5-5 의 경우: 550000010100000101 이고, 뒤집으면 1111101011111010 이 되며, 1을 더하면 1111101111111011 이 됩니다 — 2565=251256 - 5 = 251 과 같은 결과입니다.

비트 폭은 왜 중요한가요?

폭은 패턴이 차지하는 비트 수, 따라서 저장할 수 있는 숫자의 범위를 고정합니다. 같은 십진 값이라도 폭이 커질수록 선행하는 0이나 1의 문자열이 더 길어집니다.

버그 신고

이 필드는 필수입니다.