맨위로가기

부호화된 숫자 표현

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

부호화된 숫자 표현은 디지털 컴퓨터에서 숫자를 표현하는 다양한 방식을 설명하는 기술 용어이다. 초기 디지털 컴퓨팅 시대에 음수를 표현하는 방법으로 부호화-절대값, 1의 보수, 2의 보수 등 여러 방식이 경쟁했다. 2의 보수는 하드웨어 구현의 용이성으로 인해 널리 채택되었으며, 현재 대부분의 프로세서에서 사용된다. 이 외에도 1의 보수, 부호화-절대값 표현, 오프셋 이진법, 밑이 -2인 표현 방식 등 다양한 방식이 존재하며, 부동 소수점 숫자 표현이나 특정 코딩 방식 등에서 활용된다.

더 읽어볼만한 페이지

  • 컴퓨터 산술 - IEEE 754
    IEEE 754는 부동소수점 숫자를 표현하고 처리하기 위한 국제 표준으로, 다양한 형식과 연산, 반올림 규칙, 예외 처리 등을 정의한다.
  • 컴퓨터 산술 - 1의 보수
    1의 보수는 이진수에서 양수는 일반적인 이진수로, 음수는 양수의 각 비트를 반전시켜 표현하며, 덧셈 시 자리올림수가 발생하면 결과값에 더해야 하고, 0을 중복 표현하는 단점으로 현대에는 2의 보수가 주로 사용된다.
부호화된 숫자 표현
부호화된 수 표현
목적음수를 디지털 시스템에서 표현하는 방법
사용 분야컴퓨터 과학, 전자 공학
종류
부호와 크기 표현장점: 직관적
단점: 0의 표현이 두 가지, 덧셈/뺄셈 연산 복잡
오프셋 이진 표현특징: 모든 수를 양수로 표현
장점: 크기 비교 용이
2의 보수 표현장점: 0의 표현이 유일, 덧셈/뺄셈 연산 단순
단점: 직관적이지 않음
1의 보수 표현장점: 덧셈/뺄셈 연산 비교적 단순
단점: 0의 표현이 두 가지

2. 역사

디지털 컴퓨팅의 초창기에는 하드웨어 기술과 숫자를 표현하는 방식(숫자 체계)에 대해 여러 아이디어가 경쟁했다. 특히 음수를 어떻게 표현할 것인가를 두고 당시 전문가들 사이에서 활발한 논의가 있었다.

주요 경쟁 방식은 다음과 같았다.


  • 2의 보수: 오늘날 컴퓨터 시스템에서 가장 널리 사용되는 방식이다.
  • 1의 보수: 양수 값의 모든 비트를 반전시켜 음수 값을 표현하는 방식이다.
  • 부호와 크기(Sign and magnitude): 숫자의 맨 앞 비트를 부호(양수 또는 음수)를 나타내는 데 사용하는 방식이다.


각 방식은 하드웨어 구현의 복잡성, 0을 표현하는 방식(음의 영 문제 등), 연산 속도 등에서 서로 다른 장단점을 가지고 있었다. 예를 들어, '부호와 크기' 방식은 사람이 이해하기는 쉬웠지만, 연산을 위해서는 내부적으로 다른 방식으로 변환해야 하는 번거로움과 추가적인 하드웨어 비용이 발생했다. IBM의 초기 컴퓨터(704, 709, 709x 시리즈)가 이 방식을 사용했다. '1의 보수' 방식은 하드웨어 설계가 비교적 간단했지만, 여전히 '음의 영' 문제가 존재했고 뺄셈 연산이 다소 복잡해질 수 있었다. PDP-1, CDC 6000 시리즈, UNIVAC 1100 시리즈 등 여러 컴퓨터에서 이 방식을 채택했다.

결과적으로 하드웨어로 구현하기 가장 쉽고 효율적인 2의 보수 방식이 점차 표준으로 자리 잡게 되었다.[1] 초기 메인프레임 시대에 트랜지스터 수를 줄여 비용을 절감할 수 있다는 장점 때문에 IBM System/360, PDP-10 등 많은 시스템에서 채택되었고,[2] 이후 집적 회로(IC) 기술이 발전하면서 Intel 8080과 같은 초기 CPU부터 시작하여 x86,[3] ARM[4] 등 현대의 거의 모든 프로세서가 2의 보수 방식을 사용하고 있다.

2. 1. 초기 논쟁과 배경

디지털 컴퓨팅 초기에는 하드웨어 기술과 숫자 표현 방식(숫자 체계)에 대한 여러 경쟁적인 아이디어가 존재했다. 특히 음수를 어떻게 표현할 것인가를 두고 당시 최고 전문가들 사이에서 격렬한 논쟁이 벌어졌다.

크게 세 가지 방식이 경쟁했다.

  • 2의 보수: 오늘날 가장 널리 쓰이는 방식이다.
  • 1의 보수: 양수 값의 모든 비트를 뒤집어 음수 값을 만드는 방식이다.
  • 부호와 크기 (Sign and magnitude): 수의 맨 앞 비트(부호 비트)를 바꾸어 양수와 음수를 구별하는 방식이다.


각 방식에는 장단점이 있었다.
부호와 크기 방식은 작은 숫자를 표현할 때 비트를 하나 덜 사용하므로, 1960년대에 흔했던 메모리 덤프를 분석하기 쉬웠다는 장점이 있었다. 그러나 내부 연산은 1의 보수 방식을 사용했기에, 레지스터에서 연산 장치로 데이터를 보낼 때 1의 보수로 변환하고, 결과를 다시 레지스터로 보낼 때 부호와 크기 방식으로 변환하는 과정이 필요했다. 이는 다른 방식보다 더 많은 게이트를 필요로 했는데, 당시에는 개별 트랜지스터의 비용과 패키징이 중요한 문제였기 때문에 단점으로 작용했다. IBM은 초기에 이 방식을 지지했으며, 704, 709, 709x 시리즈 컴퓨터가 대표적인 예시다.
1의 보수 방식은 값을 연산 장치로 보내거나 받을 때 별도의 변환 과정이 필요 없어 하드웨어 설계가 다소 단순해질 수 있었다. 그러나 부호와 크기 방식처럼 음의 영(-0)이라는, 양수 0과 다른 표현이 존재하는 문제가 있었다. 음수 0은 양수 0과 계산상 동일하게 작동하지만, 어떤 값이 0인지 비교할 때는 두 가지 형태(양수 0, 음수 0)를 모두 확인해야 하는 번거로움이 있었다. 또한, 1의 보수 뺄셈 연산 시 순환 자리 올림(end-around borrow)이 발생할 수 있어 덧셈/뺄셈 논리가 복잡해진다는 단점과, 뺄셈 시 단순히 피연산자의 비트를 뒤집으면 되므로 오히려 더 간단하다는 주장이 공존했다. PDP-1, CDC 160 시리즈, CDC 3000 시리즈, CDC 6000 시리즈, UNIVAC 1100 시리즈, LINC 컴퓨터 등이 1의 보수 방식을 사용했다.
2의 보수 방식은 하드웨어적으로 구현하기 가장 쉬웠기 때문에 결국 가장 널리 채택되었다.[1] 초기 메인프레임 컴퓨터의 프로세서는 수천 개의 트랜지스터로 구성되는 경우가 많았는데, 2의 보수 방식을 사용하면 트랜지스터 수를 줄여 비용을 크게 절감할 수 있었다. IBM System/360, GE-600 시리즈,[2] PDP-6, PDP-10과 같은 메인프레임과 PDP-5, PDP-8, PDP-11, VAX와 같은 미니컴퓨터들이 2의 보수 방식을 사용했다. IC 기술이 발전하면서 Intel 8080과 같은 초기 IC 기반 CPU 설계자들도 2의 보수 연산을 선택했고, 이후 x86[3], m68k, Power ISA[4], MIPS, SPARC, ARM, Itanium, PA-RISC, DEC Alpha 등 거의 모든 프로세서가 2의 보수 방식을 채택하게 되었다.

2. 2. 2의 보수의 등장과 발전

2의 보수는 하드웨어에서 구현하기 가장 쉬웠는데, 이것이 널리 채택된 궁극적인 이유로 여겨진다.[1] 초기 메인프레임의 프로세서는 종종 수천 개의 트랜지스터로 구성되었으므로, 상당한 수의 트랜지스터를 제거하는 것은 상당한 비용 절감 효과를 가져왔다. 이러한 장점 덕분에 IBM System/360, GE-600 시리즈,[2] PDP-6, PDP-10과 같은 메인프레임과 PDP-5, PDP-8, PDP-11, VAX와 같은 미니컴퓨터에서 2의 보수 연산 방식을 사용했다. 초기 집적 회로(IC) 기반 CPU(Intel 8080 등)의 설계자들도 2의 보수 연산을 사용하기로 결정했다. IC 기술이 발전함에 따라 2의 보수 기술은 사실상 표준으로 자리 잡았으며, x86,[3] m68k, Power ISA,[4] MIPS, SPARC, ARM, Itanium, PA-RISC, DEC Alpha를 포함한 현대의 거의 모든 프로세서에서 채택되었다.

3. 부호화-절대값 표현 (Sign-Magnitude)

'''부호-절대값 표현'''(Sign-Magnitude) 방식은 숫자를 표현할 때, 하나의 부호 비트(Sign bit)를 사용하여 양수음수를 구분하고 나머지 비트들로 해당 숫자의 절댓값(Magnitude)을 나타내는 방법이다. 일반적으로 최상위 비트(MSB)를 부호 비트로 사용하며, 이 비트가 0이면 양수(+), 1이면 음수(-)를 의미한다. '부호-크기' 또는 '부호 및 크기' 표현이라고도 한다.

예를 들어, 8비트 바이트를 사용하는 경우, 가장 왼쪽의 최상위 비트 1개는 부호를 나타내고 나머지 7개 비트는 값의 크기를 나타낸다. 7개 비트로는 0000000 (0)부터 1111111 (127)까지 표현할 수 있으므로, 8비트 부호-절대값 표현으로는 -12710부터 +12710까지의 십진수를 나타낼 수 있다. 십진수 -4310은 이진수 '''1'''0101011로, +4310은 '''0'''0101011로 표현된다.

8비트 부호-절대값 표현
이진 값부호-절대값 해석부호 없는 해석
0000000000
0000000111
01111111127127
10000000−0128
10000001−1129
11111111−127255



부호-절대값 표현 방식은 다음과 같은 특징과 단점을 가진다.[5][17]

# '''두 가지 0 표현''': 0을 나타내는 방법이 00000000 (+0)과 10000000 (−0) 두 가지로 존재한다. 이는 0과 비교할 때 두 가지 경우를 모두 확인해야 하는 번거로움을 야기한다.

# '''복잡한 연산''': 덧셈과 뺄셈 연산을 수행할 때 부호 비트를 별도로 고려해야 하므로 하드웨어 구현이 1의 보수2의 보수 방식에 비해 복잡하다. 예를 들어, IBM의 초기 시스템에서는 내부적으로 1의 보수로 변환하여 연산한 뒤 다시 부호-절대값으로 변환하는 과정이 필요했다.

# '''복잡한 비교''': 두 수를 비교할 때도 부호 비트를 먼저 검사해야 한다. 반면, 2의 보수 방식에서는 단순히 두 수를 빼서 결과의 부호만 확인하면 된다.

# '''제한된 음수 범위''': 표현할 수 있는 음수의 범위가 2의 보수 방식보다 좁다. 8비트 기준으로 -127까지 표현 가능한데, 이는 같은 비트 수로 -128까지 표현 가능한 2의 보수 방식보다 범위가 하나 작다.

디지털 컴퓨팅 초기에는 음수 표현 방식으로 부호-절대값, 1의 보수, 2의 보수 등 여러 아이디어가 경쟁했다. 부호-절대값 방식은 사람이 숫자를 표현하는 방식(+ 또는 - 기호를 숫자 앞에 붙이는 것)과 유사하여 직관적이라는 장점이 있었다. 또한, 작은 숫자 값을 표현할 때 메모리 덤프를 추적하기 용이하다는 점도 고려되었다 (1960년대). 이러한 이유로 IBM704, 709, 709x 시리즈와 같은 초기 이진 컴퓨터 및 일부 십진 컴퓨터에서 이 방식을 채택했다.[13]

그러나 연산 회로의 복잡성과 두 가지 0 표현 등의 문제로 인해, 하드웨어 구현이 가장 용이한 2의 보수 방식이 트랜지스터 비용 절감 효과와 맞물려 점차 표준으로 자리 잡게 되었다.[1] 현대의 컴퓨터 시스템에서는 대부분 2의 보수 방식을 사용하지만, 부호-절대값 표현은 부동소수점 수의 가수(mantissa 또는 significand)를 나타내는 데에는 여전히 가장 일반적으로 사용된다.

4. 1의 보수 (Ones' Complement)

이진법에서 '''1의 보수''' 표현은 음수를 표현할 때 해당 양수의 모든 비트를 반전(0은 1로, 1은 0으로 바꾸는 비트 연산 NOT)시켜 얻는다.[18] 예를 들어, 8비트에서 십진수 43을 나타내는 이진수 00101011의 1의 보수는 11010100이며, 이는 -43을 의미한다.

부호-크기 표현 방식과 마찬가지로 1의 보수 표현 역시 0을 나타내는 방법이 두 가지 존재하는데, 00000000 (+0)과 11111111 (−0)이다.[19] ''N''비트를 사용하는 1의 보수 부호 있는 숫자의 표현 범위는 −(2''N''−1 − 1)부터 +(2''N''−1 − 1)까지이며, 여기에 +0과 -0이 포함된다. 일반적인 8비트 바이트의 경우, −12710부터 +12710까지 표현할 수 있고, 0은 00000000 (+0) 또는 11111111 (−0)로 나타낸다.

8비트 1의 보수
이진수 값1의 보수 해석부호 없는 해석
00000000+00
0000000111
01111101125125
01111110126126
01111111127127
10000000−127128
10000001−126129
10000010−125130
11111101−2253
11111110−1254
11111111−0255



1의 보수 체계에서 두 수를 더할 때는 일반적인 이진수 덧셈을 수행한 뒤, 만약 자리올림(carry)이 발생하면 그 자리올림 값을 결과 합계에 다시 더해주는 순환 자리올림(end-around carry) 과정이 필요하다.[20] 예를 들어, -1 (11111110)과 +2 (00000010)를 더하는 과정은 다음과 같다.

```

이진법 십진법

11111110 −1

+ 00000010 +2

─────────── ──

1 00000000 0 ← 자리올림 발생, 아직 올바른 답이 아님

1 +1 ← 발생한 자리올림(1)을 더함

─────────── ──

00000001 1 ← 올바른 답

```

단순히 이진 덧셈만 수행하면 00000000이라는 잘못된 결과를 얻지만, 발생한 자리올림(1)을 결과에 더해주면 00000001, 즉 올바른 값 1을 얻게 된다. 1의 보수 뺄셈 연산 또한 비슷한 방식으로 처리되며, 순환 자리 빌림(end-around borrow)이 발생할 수 있다.

이 표현 방식은 "1의 보수"라고 불리는데, 이는 어떤 양수 x부정값(−x)을 얻을 때, 모든 비트가 1인 값(음수 0의 1의 보수 표현)에서 x를 빼서 형성할 수 있기 때문이다. 이는 +0과 합동인 2의 거듭제곱 수에서 x를 빼서 부정값을 얻는 2의 보수 방식과 대비된다.[21][12] 따라서 같은 음수 값이라도 1의 보수 표현과 2의 보수 표현은 1만큼 차이가 난다.

디지털 컴퓨팅 초기에는 음수를 표현하는 방식으로 1의 보수, 2의 보수, 부호-크기 표현 등이 경쟁했다. 1의 보수는 연산 과정에서 값을 변환할 필요가 없어 하드웨어 설계가 상대적으로 단순하다는 장점이 있었지만, −0 표현 문제와 순환 자리올림/빌림 처리의 복잡성 때문에 점차 2의 보수 방식이 주류가 되었다.[1] 그럼에도 불구하고 PDP-1, CDC 160 시리즈, CDC 3000 시리즈, CDC 6000 시리즈, UNIVAC 1100 시리즈, LINC 등 여러 초기 컴퓨터 시스템에서 1의 보수 표현을 사용했다. 또한, 현대의 인터넷 프로토콜 스위트에서도 IPv4 헤더 체크섬 계산에 1의 보수 덧셈 방식이 사용되고 있다.

5. 2의 보수 (Two's Complement)

초창기 디지털 컴퓨팅 시대에는 음수를 표현하는 방식에 대해 여러 경쟁적인 아이디어가 있었다. 대표적으로 1의 보수, '부호와 크기'(sign-and-magnitude) 방식, 그리고 현재 가장 널리 쓰이는 '''2의 보수''' 방식이 경쟁했다.


  • 부호와 크기: 숫자의 절대값은 그대로 두고, 부호 비트만 바꾸는 방식이다. 사람이 이해하기는 쉽지만, 0을 표현하는 방식이 두 가지(+0, -0)이고 덧셈뺄셈 회로를 따로 만들어야 하는 단점이 있었다. IBM의 초기 메인프레임 컴퓨터(IBM 704, IBM 709, 709x 시리즈)에서 사용되었다.
  • 1의 보수: 양수의 모든 비트를 반전시켜 음수를 표현하는 방식이다. 덧셈 과정에서 순환 자리올림(end-around carry)이 발생하는 등 연산이 복잡하고, 0 표현이 여전히 두 가지(+0, -0)인 문제가 있었다. PDP-1, CDC 6000 시리즈, UNIVAC 1100 시리즈 등에서 사용했다.


2의 보수는 이러한 문제점들을 해결하고 하드웨어 구현이 가장 간편하다는 장점 때문에 널리 채택되었다.[1] 특히 초기 컴퓨터는 트랜지스터 수가 많아지면 비용이 크게 증가했기 때문에, 하드웨어 구현의 용이성은 중요한 선택 기준이었다.[13] IBM System/360, GE-600 시리즈, PDP-6, PDP-10, PDP-11, VAX 등 많은 메인프레임미니컴퓨터가 2의 보수 방식을 채택했다.[14][2] 이후 집적회로(IC) 기반의 마이크로프로세서(Intel 8080 등) 설계에서도 2의 보수 방식이 표준으로 자리 잡았고, 현재 대부분의 CPU 아키텍처(x86[15][3], m68k, Power ISA[16][4], MIPS, SPARC, ARM, Itanium, PA-RISC, DEC Alpha)가 이 방식을 사용한다.

2의 보수 표현 방식은 어떤 수의 모든 비트를 반전시킨 값(즉, 1의 보수)에 1을 더하여 음수를 표현한다. 이 방식의 가장 큰 특징은 0의 표현이 `00000000` 하나뿐이라는 점이다. 또한, 덧셈, 뺄셈 등의 연산이 부호 없는 정수와 동일하게 처리될 수 있어 하드웨어 설계가 단순해진다. 예를 들어 8비트 시스템에서 127 (`01111111`)과 -128 (`10000000`)을 더하는 연산은 부호 없는 정수 127과 128을 더하는 것과 동일한 비트 연산으로 처리된다.

어떤 수의 2의 보수(부호 반전)를 구하는 방법은 다음과 같다.[22][10]
방법 1:# 모든 비트를 반전시킨다 (1은 0으로, 0은 1로).

# 그 결과에 1을 더한다.

예시: +2 (`00000010`)의 2의 보수 구하기

# 모든 비트 반전: `11111101`

# 1 더하기: `11111101 + 1 = 11111110` (-2의 2의 보수 표현)
방법 2:# 오른쪽 끝에서부터 처음 나타나는 '1'을 찾는다.

# 그 '1'의 왼쪽에 있는 모든 비트를 반전시킨다.

예시 1예시 2
1. 오른쪽에서 첫 번째 "1" 찾기0010100100101100
2. 해당 "1" 왼쪽 비트 모두 반전1101011111010100



아래는 4비트를 사용하여 여러 방식으로 정수를 표현한 예시이다. 2의 보수 방식은 -8부터 +7까지의 정수를 표현할 수 있으며, 0의 표현이 유일함을 확인할 수 있다.

4비트 정수 표현 비교
십진수부호 없는 정수부호-크기1의 보수2의 보수Excess-8 (바이어스)
+701110111011101111111
+601100110011001101110
+501010101010101011101
+401000100010001001100
+300110011001100111011
+200100010001000101010
+100010001000100011001
+000000000000000001000
−010001111
−11001111011110111
−21010110111100110
−31011110011010101
−41100101111000100
−51101101010110011
−61110100110100010
−71111100010010001
−810000000


6. 오프셋 이진법 (Offset Binary)

Offset Binary|오프셋 바이너리eng는 'Excess-Keng' 또는 '바이어스 표현'(biased representation)이라고도 불린다. 이 방식은 표현하려는 정수에 미리 정해진 값 K(바이어스 값 또는 오프셋)를 더하여 그 결과를 부호 없는 정수로 나타내는 방식이다. 따라서 특정 값 V를 표현하기 위해 V+K를 계산하여 이를 부호 없는 이진수로 저장한다. 예를 들어, 0은 K로 표현되고, -K는 모든 비트가 0인 패턴으로 표현된다.

8비트 Excess-127 표현 예시
비트 패턴Excess-127 해석 (실제 값)부호 없는 값 해석 (저장된 값)
00000000−1270
00000001−1261
011111110127
10000000+1128
11111111+128255



오프셋 이진법은 2의 보수 표현 방식과 유사한 면이 있는데, N비트로 표현할 경우 최상위 비트(부호 비트)가 반전된 Excesseng-(2N−1) 표현으로 볼 수도 있다.

이 표현 방식은 현재 주로 부동소수점 숫자의 지수부를 나타내는 데 사용된다. IEEE 754 부동소수점 표준이 대표적인 예이다.


  • 단정밀도(32비트) 형식에서는 지수부를 8비트 Excess-127eng 방식으로 표현한다. 즉, 바이어스 값 K는 127이다.
  • 배정밀도(64비트) 형식에서는 지수부를 11비트 Excess-1023eng 방식으로 표현하며, 바이어스 값 K는 1023이다.


과거에는 이진화 십진법(BCD)의 한 형태로 Excess-3eng 코드가 사용되기도 했다.

7. 기타 표현 방식

기존의 이진법 시스템에서 (radix)은 2이다. 따라서 가장 오른쪽에 있는 비트는 20, 다음 비트는 21, 그 다음 비트는 22 등을 나타낸다. 그러나 밑이 -2인 이진법 시스템, 즉 밑 -2 (Base -2) 표현 방식도 사용할 수 있다. 이 방식에서는 가장 오른쪽에 있는 비트는 (−2)0 = +1, 다음 비트는 (−2)1 = −2, 다음 비트는 (−2)2 = +4 등을 나타내며 부호가 번갈아 나타난다.

밑 -2 표현에서 나타낼 수 있는 숫자의 범위는 비대칭적이다. 사용하는 비트 수가 짝수이면 표현 가능한 가장 큰 음수의 절댓값이 가장 큰 양수의 2배가 되고, 비트 수가 홀수이면 그 반대가 된다. 아래는 8비트 밑 -2 표현의 예시이다.

8비트 밑 -2 표현 예시
이진 값밑 -2 해석부호 없는 해석
0000000000
0000000111
0111111143127
10000000−128128
10000001−127129
11111111−85255



구글프로토콜 버퍼에서 사용되는 지그재그 인코딩 (Zig-zag encoding)은 부호와 크기 표현 방식과 유사하지만, 부호 비트로 최하위 비트(least significant bit)를 사용하며 0은 단일 표현을 갖는다. 이 방식은 부호 없는 정수를 위한 가변 길이 수량 인코딩을 부호 있는 정수에도 효율적으로 사용할 수 있게 한다.[23]

또 다른 접근 방식으로는 각 자릿수마다 부호를 부여하는 방식이 있다. 예를 들어, 1726년 존 콜슨(John Colson)은 1, 2, 3, 4, 5와 같은 "작은 숫자" 표현을 사용하여 계산을 단순화할 것을 제안했다. 1840년에는 오귀스탱 루이 코시(Augustin Louis Cauchy)가 계산 오류를 줄이기 위해 수정된 십진수 표현 방식을 선호한다고 밝혔다.

8. 비교표

다음 표는 4비트를 사용하여 표현할 수 있는 양의 정수와 음의 정수를 보여준다.

4비트 정수 표현
소수부호화되지 않음부호 및 크기1의 보수2의 보수8 초과 (편향)밑 -2
+16    해당 없음해당 없음해당 없음해당 없음해당 없음해당 없음
+15    1111해당 없음해당 없음해당 없음해당 없음해당 없음
+14    1110해당 없음해당 없음해당 없음해당 없음해당 없음
+13    1101해당 없음해당 없음해당 없음해당 없음해당 없음
+12    1100해당 없음해당 없음해당 없음해당 없음해당 없음
+11    1011해당 없음해당 없음해당 없음해당 없음해당 없음
+10    1010해당 없음해당 없음해당 없음해당 없음해당 없음
+9    1001해당 없음해당 없음해당 없음해당 없음해당 없음
+8    1000해당 없음해당 없음해당 없음해당 없음해당 없음
+7    01110111011101111111해당 없음
+6    01100110011001101110해당 없음
+5    010101010101010111010101
+4    010001000100010011000100
+3    001100110011001110110111
+2    001000100010001010100110
+1    000100010001000110010001
+0    000000000000000010000000
−0    10001111
−1    해당 없음10011110111101110011
−2    해당 없음10101101111001100010
−3    해당 없음10111100110101011101
−4    해당 없음11001011110001001100
−5    해당 없음11011010101100111111
−6    해당 없음11101001101000101110
−7    해당 없음11111000100100011001
−8    해당 없음해당 없음해당 없음100000001000
−9    해당 없음해당 없음해당 없음해당 없음해당 없음1011
−10    해당 없음해당 없음해당 없음해당 없음해당 없음1010
−11    해당 없음해당 없음해당 없음해당 없음해당 없음해당 없음



같은 표를 "이진 비트가 주어졌을 때, 표현 시스템에서 해석한 숫자는 무엇인가?"라는 관점에서 보면 다음과 같다.

이진법부호화되지 않음부호 및 크기1의 보수2의 보수8 초과 (편향)밑 −2
00000000−80
00011111−71
00102222−6−2
00113333−5−1
01004444−44
01015555−35
01106666−22
01117777−13
10008−0−7−80−8
10019−1−6−71−7
101010−2−5−62−10
101111−3−4−53−9
110012−4−3−44−4
110113−5−2−35−3
111014−6−1−26−6
111115−7−0−17−5


참조

[1] 논문 Two's complement computation sharing multiplier and its applications to high performance DFE https://www.academia[...] 2003-02
[2] 서적 GE-625 / 635 Programming Reference Manual http://ed-thelen.org[...] General Electric 2013-08-15
[3] 서적 Intel 64 and IA-32 Architectures Software Developer's Manual http://download.inte[...] Intel 2013-08-06
[4] 서적 Power ISA Version 2.07 https://fileadmin.cs[...] Power.org 2023-11-02
[5] 웹사이트 Computer Science 315 Lecture Notes http://www.cs.uwm.ed[...] 2020-02-21
[6] 특허 Array multiplier operating in one's complement format https://patents.goog[...]
[7] 특허 One's complement cryptographic combiner https://patents.goog[...]
[8] 논문 Comment on the Sequential and Indeterminate Behavior of an End-Around-Carry Adder 1977
[9] 서적 The Art of Computer Programming
[10] 웹사이트 Two's Complement http://www.cs.cornel[...] Cornell University 2015-09-15
[11] 웹사이트 Protocol Buffers: Signed Integers http://developers.go[...]
[12] 서적 The Art of Computer Programming
[13] 논문 Two's complement computation sharing multiplier and its applications to high performance DFE https://www.academia[...]
[14] 서적 GE-625 / 635 Programming Reference Manual http://ed-thelen.org[...] General Electric 2013-08-15
[15] 서적 Intel 64 and IA-32 Architectures Software Developer’s Manual http://download.inte[...] Intel 2013-08-06
[16] 서적 Power ISA Version 2.07 https://www.power.or[...] Power.org 2013-08-06
[17] 웹인용 Computer Science 315 Lecture Notes http://www.cs.uwm.ed[...] 2020-02-21
[18] 웹인용 Array multiplier operating in one's complement format (1의 보수 형식으로 작동하는 어레이 승수, 미국 특허 제4484301호) https://patents.goog[...] 1981-03-10
[19] 웹인용 One's complement cryptographic combiner (1의 보수 암호 결합기, 미국 특허 제6760440호) https://patents.goog[...] 1999-12-11
[20] 논문 Comment on the Sequential and Indeterminate Behavior of an End-Around-Carry Adder http://pdfs.semantic[...]
[21] 서적 The Art of Computer Programming
[22] 웹인용 Two's Complement http://www.cs.cornel[...] Cornell University 2015-09-15
[23] 웹사이트 Protocol Buffers: Signed Integers http://developers.go[...]



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com