보충물
Ones' complement![]() |
비트 | 부호 없는 값 | 보충물 가치 |
---|---|---|
000 | 0 | 0 |
001 | 1 | 1 |
010 | 2 | 2 |
011 | 3 | 3 |
100 | 4 | −3 |
101 | 5 | −2 |
110 | 6 | −1 |
111 | 7 | −0 |
비트 | 서명 없음 가치 | 한 사람의 보충하다 가치 |
---|---|---|
0000 0000 | 0 | 0 |
0000 0001 | 1 | 1 |
0000 0010 | 2 | 2 |
0111 1110 | 126 | 126 |
0111 1111 | 127 | 127 |
1000 0000 | 128 | −127 |
1000 0001 | 129 | −126 |
1111 1101 | 253 | −2 |
1111 1110 | 254 | −1 |
1111 1111 | 255 | −0 |
1의 2진수 보수는 숫자의 2진수 표현(스왑 0과 1s)에 있는 모든 비트를 반전한 값이다."하나의 보완"(단수 "하나"가 아닌 여러 "하나"를 소유하는 것에 주목)이라는 이름은 이러한 반전된 값이 원본에 추가되면 항상 "모든 하나" 번호가 생성된다는 사실을 의미한다(여기서 "완전"이라는 용어는 0이 아닌 기본 숫자와 관련하여 상호 가산 역수의 쌍을 의미한다).이 수학적 연산은 주로 컴퓨터 과학에 관심이 있는데, 컴퓨터 과학에서는 특정 컴퓨터가 숫자를 어떻게 나타내느냐에 따라 다양한 영향을 미칩니다.
1의 보계 또는 1의 보계 산술은 음수가 대응하는 양수의 2진수 표현 역수로 표현되는 시스템이다.이러한 시스템에서, 숫자는 그 사람의 보수를 계산함으로써 부정된다(양수에서 음수로 또는 그 반대로 변환된다).N비트의 보수는 -(2-1N−1)~2-1N−1 범위의 정수만을 나타낼 수 있는 반면, 2비트의 보수는 -2N−1~2-1을N−1 나타낼 수 있습니다.마이크로프로세서에서 음의 정수를 2의 보완 및 부호 크기와 함께 일반적으로 나타내는 세 가지 중 하나입니다.
1개의 보완 이진수 체계는 값의 산술 음수인 정수 값의 비트 보수로 특징지어진다.즉, 숫자의 모든 비트(논리 보완)를 반전시키면 0에서 값을 뺀 것과 같은 결과가 됩니다.
UNIVAC 1101, CDC 160, CDC 6600, LINC, PDP-1 및 UNIVAC 1107을 포함한 많은 초기 컴퓨터들은 한 컴퓨터의 덧셈 연산을 사용했다.CDC 6600의 후속 기종들은 1980년대 후반까지 보수를 계속했고, UNIVAC 1107(UNIVAC 1100/2200 시리즈)의 후속 기종들은 여전히 보수를 사용하지만, 현대의 컴퓨터들은 대부분 2의 보수를 사용한다.
번호 표현
양수는 2의 보수와 별자리가 사용하는 것과 같은 단순 2진법이다.음의 값은 대응하는 양의 값의 비트 보완 값입니다.가장 큰 양의 값은 부호(상위) 비트가 오프(0)이고 다른 모든 비트가 온(1)인 것이 특징입니다.가장 낮은 음의 값은 부호 비트가 1이고 다른 모든 비트가 0인 것이 특징입니다.다음 표는 4비트 시스템에서 가능한 모든 값(-7 ~ +7)을 보여 줍니다.
+ - 0 0000 1111 - 0 의 경우는 +0 와 -0 의 양쪽 모두가 TRUE 를 반환하고, 0 이 아닌 경우는 FALSE 를 반환합니다.2 0010 1101 3 0011 1100 4 0100 1011 5 0101 1010 6 0110 1001 7 0111 1000
기본
2개의 값을 추가하는 것은 간단합니다.최하위 비트에 값을 정렬하고 추가하기만 하면 반송파를 비트 한 개 위치에 전파할 수 있습니다.캐리어가 단어의 끝을 지나 확장되는 경우 "감겨진 상태"라고 하며, "엔드 어라운드 캐리"라고 합니다.이 경우 가장 오른쪽 비트에 비트를 다시 추가해야 합니다.이 현상은 2의 보완 산술에서는 발생하지 않는다.
0001 0110 22 + 0000 0011 3 =========== ==== 0001 1001 25
뺄셈도 비슷하지만 차입금이 전달되지 않고 왼쪽으로 전파된다는 점이 다릅니다.차입금이 단어 끝부분을 지나 확장되는 경우, "뒤집기"라고 하는 조건, 즉 "끝내기 차입"이라고 불립니다.이 경우 맨 오른쪽 비트에서 비트를 빼야 합니다.이 현상은 2의 보완 산술에서는 발생하지 않는다.
0000 0110 6 - 0001 0011 19 =========== 1 1111 0011 - 12 : 엔드 어라운드차입이 생성되며 중간 결과의 부호 비트는 1. - 0000 0001 - 결과에서 엔드 어라운드차입을 차감합니다.=========== 1111 0010 - 13 : 올바른 결과(6 - 19 = - 13 )
양의 값의 비트 보수가 양의 값의 음의 크기임을 쉽게 입증할 수 있습니다.19 + 3의 계산은 19 - (-3)와 같은 결과를 산출합니다.
19에 3을 더하다.
0001 0011 19 + 0000 0011 3 =========== ==== 0001 0110 22
19에서 -3을 빼라.
0001 0011 19 - 1111 1100 - 3 =========== 1 0001 0111 23 : 최종 차입이 생성됩니다.- 0000 0001 1 : 결과에서 최종 차입금을 차감합니다.=========== ==== 0001 0110 22 — 올바른 결과(19 - (-3) = 22).
마이너스 제로
마이너스 0은 부호 있는 워드의 모든 비트가 1인 상태입니다.이는 가장 왼쪽 비트가 1일 때 값이 음수이고 음수가 숫자의 크기의 비트 보완이라는 보칙에 따릅니다.이 값은 계산 시에도 0으로 동작합니다.다른 값에 마이너스 0을 더하거나 빼면 원래 값이 생성됩니다.
마이너스 0 추가:
0001 0110 22 + 1111 1111 -0 =========== 1 0001 0101 21 엔드 어라운드 캐리(end-around carrier)가 생성됩니다.+ 0000 0001 1 =========== 0001 0110 22 올바른 결과 (22 + (-0) = 22)
마이너스 0 빼기:
0001 0110 22 - 1111 111 - 0 =========== 1 0001 0111 23 최종차입금이 발생한다.- 0000 0001 1 =========== 0001 0110 22 올바른 결과(22 - (-0) = 22)
음의 0은 1의 보합기에서 쉽게 생성된다.같은 크기의 양수와 음수를 더하면 됩니다.
0001 0110 22 + 1110 1001 - 22 =========== 1111 - 0 - 0.
수학은 항상 올바른 결과를 내지만 마이너스 0의 부작용은 소프트웨어가 마이너스 0을 테스트해야 한다는 것입니다.
마이너스 제로 회피
보완 감산기를 사용하여 덧셈이 이루어지면 마이너스 0의 생성은 문제가 되지 않습니다.첫 번째 피연산자는 수정되지 않은 뺄셈으로 전달되고 두 번째 피연산자는 보완되며, 뺄셈은 음의 0을 피하기 위해 올바른 결과를 생성합니다.앞의 예에서는 22와 -22를 더하여 -0을 생성했습니다.
0001 0110 22 0001 0110 1001 - 22 1110 1001 - 22 + 1110 1001 - 22 - 0001 0110 22 + 0001 0110 22 - 1110 1001 - 22 =========== 그러나 ==== 마찬가지로 === 하지만 === 1111 - 0 000000 01111 1111 −0 0000 0000 0
"코너 케이스"는 한쪽 또는 양쪽 피연산자가 0 및/또는 음의 0일 때 발생합니다.
0001 0010 18 0001 0010 18 − 0000 0000 0 − 1111 1111 −0 =========== ==== =========== ==== 0001 0010 18 1 0001 0011 19 − 0000 0001 1 =========== ==== 0001 0010 18
+0을 빼는 것은 간단한 일입니다(위 그림 참조).두 번째 피연산자가 음의 0이면 반전되며 첫 번째 피연산자의 원래 값이 결과입니다.-0을 빼는 것도 간단하다.결과는 두 가지 경우 중 하나만 될 수 있습니다.1의 경우 오퍼랜드 1은 -0이므로 비트 위치마다 1에서 1을 빼기만 하면 된다.2의 경우, 감산은 오퍼랜드1보다 1 큰 값과 엔드 어라운드차입값을 생성합니다.차입을 완료하면 오퍼랜드1과 같은 값이 생성됩니다.
다음 예시는 양쪽 오퍼랜드가 플러스 또는 마이너스제로인 경우의 동작을 나타내고 있습니다.
0000 0000 0 0000 0000 0 1111 1111 −0 1111 1111 −0 + 0000 0000 0 + 1111 1111 −0 + 0000 0000 0 + 1111 1111 −0 =========== ==== =========== ==== =========== ==== =========== ==== 0000 0000 0 1111 1111 −0 1111 1111 −01 1111 1110 −1 + 0000 0001 1 ================== 1111 1111 −0
0000 0000 0 0000 0000 0 1111 1111 −0 1111 1111 −0 − 1111 1111 −0 − 0000 0000 0 − 1111 1111 −0 − 0000 0000 0 =========== ==== =========== ==== =========== ==== =========== ==== 1 0000 0001 1 0000 0000 0 0000 0000 01111 1111 −0 − 0000 0001 1 =========== ==== 0000 0000 0
이 예는 ±0만을 더하는 경우 가능한 네 가지 조건 중 세 가지에서 가산기가 -0을 생성하는 것을 보여줍니다.보완 감산기는 두 오퍼랜드가 모두 -0일 때만 -0을 생성합니다.