2의 보수 계산기(부호 있는/없는 정수 변환)
정수를 8, 16, 32, 64비트 또는 원하는 너비의 2의 보수 2진수·16진수로 변환하고, 부호 있는 값과 없는 값, 오버플로, 범위를 확인합니다.
| 너비 | 대표적인 타입 | 부호 있는 최솟값 | 부호 있는 최댓값 | 부호 없는 최댓값 |
|---|---|---|---|---|
| 8비트 | int8_t / uint8_t · sbyte / byte | -128 | 127 | 255 |
| 16비트 | int16_t / uint16_t · short / ushort | -32768 | 32767 | 65535 |
| 32비트 | int32_t / uint32_t · int / uint | -2147483648 | 2147483647 | 4294967295 |
| 64비트 | int64_t / uint64_t · long / ulong | -9223372036854775808 | 9223372036854775807 | 18446744073709551615 |
| 128비트 | Int128 / UInt128 (.NET 7+), __int128 | -170141183460469231731687303715884105728 | 170141183460469231731687303715884105727 | 340282366920938463463374607431768211455 |
| 너비 | 들어맞나요? | 2의 보수(16진수) |
|---|---|---|
| 8비트 | 예 | 0xD6 |
| 16비트 | 예 | 0xFFD6 |
| 32비트 | 예 | 0xFFFFFFD6 |
| 64비트 | 예 | 0xFFFFFFFFFFFFFFD6 |
컴퓨터는 음의 정수를 2의 보수로 저장합니다. 같은 비트라도 부호 있는 바이트에서는 −1, 부호 없는 바이트에서는 255를 뜻할 수 있습니다. 이 변환기는 8, 16, 32, 64, 128비트나 원하는 너비에서 비트 패턴의 두 가지 해석을 모두 보여 주고, 2진수·16진수·8진수 표현, 값이 들어맞는지 순환하는지, 비교용으로 예전의 1의 보수와 부호-크기 표현도 함께 보여 줍니다. 모든 계산은 정확한 큰 정수로 하므로 64·128비트 값도 반올림되지 않습니다.
사용 방법
- -42 같은 10진수나 16진수·2진수·8진수 비트 패턴을 입력합니다.
- 그 숫자가 어떤 방식으로 쓰였는지 고릅니다.
- 비트 너비를 고릅니다. 바이트는 8, int는 32, long은 64이며 사용자 지정도 가능합니다.
- 부호 있는 값과 없는 값, 비트 패턴, 오버플로 검사를 확인합니다.
계산식
패턴 = x mod 2ⁿ · 부호 있는 값 = 패턴 ≥ 2ⁿ⁻¹이면 패턴 − 2ⁿ, 아니면 패턴
n은 비트 너비입니다. 음수 x는 2ⁿ − |x|가 되며, 이는 |x|의 비트를 뒤집고 1을 더한 것과 같습니다. n비트 부호 있는 값은 −2ⁿ⁻¹부터 2ⁿ⁻¹ − 1까지, 부호 없는 값은 0부터 2ⁿ − 1까지입니다. 두 범위를 모두 벗어난 10진수는 하위 n비트만 남는데, C나 Java의 형 변환과 같은 순환입니다.
예시
8비트의 −42: 256 − 42 = 214이므로 패턴은 1101 0110 = 0xD6이며, 부호 없는 바이트는 이것을 214로 읽습니다. 1의 보수는 1101 0101, 부호-크기는 1010 1010입니다. 16비트에서는 같은 값이 0xFFD6, 32비트에서는 0xFFFFFFD6입니다.
자주 묻는 질문
음수 쪽 범위가 하나 더 큰 이유는 무엇인가요?
0이 음이 아닌 패턴 하나를 차지하기 때문에 8비트 부호 있는 바이트는 −128부터 127까지를 담습니다. −128에는 짝이 되는 양수가 없어서, 부호를 뒤집으면 오버플로되어 다시 −128이 됩니다.
2의 보수에서 부호를 손으로 뒤집으려면 어떻게 하나요?
모든 비트를 뒤집고 1을 더합니다. 5는 0000 0101, 뒤집으면 1111 1010, 1을 더하면 1111 1011이며 이것이 −5입니다.
오버플로가 나면 어떻게 되나요?
하드웨어는 하위 n비트만 남깁니다. 부호 없는 바이트에서 300은 300 − 256 = 44가 됩니다. C에서 부호 있는 오버플로는 정의되지 않은 동작이라 컴파일러가 순환시키지 않을 수 있고, Java와 C#(unchecked)은 순환합니다.
1의 보수와 부호-크기는 어디에 쓰이나요?
지금은 정수에서 거의 쓰이지 않습니다. 부호-크기는 부동소수점의 부호 비트에, 1의 보수는 인터넷 체크섬(RFC 1071)에 남아 있습니다.
최종 업데이트:
이 입력값이 담긴 페이지 주소: https://kakao.mobile/ko/tools/signed-unsigned-converter/
인용·퍼가기
kakaoCalc. (2026, November 8). 2의 보수 계산기(부호 있는/없는 정수 변환). https://kakao.mobile/ko/tools/signed-unsigned-converter/
“2의 보수 계산기(부호 있는/없는 정수 변환).” kakaoCalc, 8 Nov. 2026, kakao.mobile/ko/tools/signed-unsigned-converter/.