보완방법
Method of complements수학과 컴퓨팅에서 보완 방법은 전체 범위에 걸쳐 추가하기 위해 동일한 알고리즘(하드웨어)을 사용할 수 있는 방식으로 양수와 음의 정수의 대칭 범위를 인코딩하는 기법이다.숫자의 가능한 표시의 절반은 양수를 부호화하며 나머지 절반은 각각의 첨가물을 나타낸다.상호 첨가된 역수의 쌍을 보완이라고 한다.따라서 어떤 숫자의 뺄셈은 그것의 보완을 추가함으로써 구현된다.어떤 숫자의 부호를 바꾸는 것은 그것의 보완을 생성함으로써 인코딩되는데, 이것은 매우 간단하고 효율적인 알고리즘에 의해 이루어질 수 있다.이 방법은 일반적으로 기계식 계산기에서 사용되었고, 현대식 컴퓨터에서도 여전히 사용되고 있다.라딕스 보어(아래 설명과 같이)의 일반화된 개념은 미디의 정리처럼 숫자 이론에서도 가치가 있다.null
소수점 표시로 주어진 숫자에 대한 네인의 보어는 각 숫자를 9에서 그 숫자를 뺀 숫자로 대체함으로써 형성된다.다른 숫자 x(최소값)에서 소수점 y(하위값)를 빼려면 다음 두 가지 방법을 사용할 수 있다.
첫 번째 방법에서 ninees의 x 보어는 y에 추가된다.그런 다음 얻어진 결과에 대한 네인의 보완이 형성되어 원하는 결과를 산출한다.null
두 번째 방법에서는 ninees의 y 보완이 x에 추가되고 1이 합에 추가된다.그런 다음 결과의 가장 왼쪽 숫자 '1'이 폐기된다.가장 왼쪽의 '1'을 폐기하는 것은 계산기나 정해진 수의 숫자를 사용하는 컴퓨터에서 특히 편리하다. 즉, 그것은 갈 곳이 없기 때문에 계산하는 동안 간단히 손실된다.나인의 보어+1은 10의 보어라고 알려져 있다.null
보완 방법은 다른 숫자 베이스(레이디)로 확장할 수 있다. 특히 대부분의 디지털 컴퓨터에서 뺄셈을 수행하거나 베이스 2 또는 이진 산술에서 음수를 나타내며, 계산에서 언더플로와 오버플로우를 테스트하는 데 사용된다.[1]
숫자 보완
라딕스 b에서 n자리 숫자 y의 라딕스 보어는 정의상 - b이다[vague]The radix complement is most easily obtained by adding 1 to the diminished radix complement, which is . Since is the digit repeated n times (because ; see also Geometric series Formula), the diminished radix complement of a number is found by complementing each digit with respect to (, b- 에서 y의 각 자릿수를 빼는 것이다. b - 1 null
x에서 y를 빼는 작업은 다음과 같이 수행할 수 있다.x의 축소된 래딕스 보어를 y에 추가하면 -의 된래딕스 보어인 b -1 x - x + b 또는 - -( - ) 값이 된다The diminished radix complement of this is the value . Alternatively, adding the radix complement of y to x results in the value or . Assuming y ≤ x , the result will always be greater or equal to 을(를) 떨어뜨리고 초기 '1을 떨어뜨리는 것은 결과를 x- + - - b - b을 빼서결과 - + b - bn을 만들거나 - 를 원하는결과를 것과 null
십진법에서 라딕스 보어는 10의 보어라고 하고, 줄어든 라딕스는 네인의 보어라고 한다.2진법으로 라딕스 보어는 두 개의 보어라고 불리고, 줄어든 라딕스는 두 개의 보어라고 한다.다른 근거에서 보완의 명칭은 유사하다.특히 도날드 크누스를 비롯한 일부 사람들은 라딕스 보어와 감소된 라딕스 보어를 구별하기 위해 아포스트로피를 배치할 것을 권고한다.이 용도에서, 4의 보어는 기본 4의 숫자의 라딕스 보어인 반면, 4의 보어는 기본 5의 숫자의 축소된 라딕스 보어인 것이다.그러나 라디스가 뚜렷할 때는 구별이 중요하지 않으며(거의 항상), 아포스트로피 배치의 미묘한 차이는 일반적인 연습이 아니다.대부분의 작가들은 자신의 것과 9의 보어를 사용하며, 많은 스타일의 매뉴얼은 아포스트로피를 생략하고, 하나와 네인의 보어를 추천한다.null
십진수 예제
숫자 | 나인스 보완하다 |
---|---|
0 | 9 |
1 | 8 |
2 | 7 |
3 | 6 |
4 | 5 |
5 | 4 |
6 | 3 |
7 | 2 |
8 | 1 |
9 | 0 |
Ninees의 소수점 보어는 9를 생성하기 위해 추가되어야 하는 숫자인데, 3의 보수는 6이고, 7의 보수는 2이며, 따라서 표를 참조하십시오.더 큰 숫자의 nines의 보어를 형성하기 위해, 각 숫자는 nines의 보어로 대체된다.null
다음 감산 문제를 고려하십시오.
873 [x, minuend] - 218 [y, subrahend]
첫 번째 방법
우리는 nines의 minuend, 873을 계산한다.그것을 하위 분석 218에 추가한 다음, 결과에 대한 nine의 보완을 계산한다.null
126 [nines]의 x = 999 - x] + 218 [y, subrahend]
=
344 [999 - x + y]
이제 결과의 nines를 계산한다.
344 [1994] 655 [9의 보완 344 = 999 - (999 - x + y) = x - y, 정답]
두 번째 방법
우리는 nines의 보완책인 218을 계산하는데, 781이다.218은 3자리 숫자여서 999에서 218을 빼는 것과 같다.null
다음, x와 nine의 y의 보어의 합을 구한다.
873 [x] + 781 [nines]의 y = 999 - y] 보어
=
1654 [999 + x - y]
그러면 선행 "1" 자리수가 떨어져 654가 주어진다.null
1654 -1000 [-(999 + 1)]
=
654 [x - y - 1]
이것은 아직 정확하지 않다.우리는 첫 번째 단계의 방정식에 999를 기본적으로 추가했다.그리고 위의 1654년 결과에서 선두 1을 떨어뜨렸을 때 1000을 제거했다.따라서 (654)를 얻으면 정답- y) 보다 1이 적다 이를 수정하려면 다음 질문에 1을 추가해야 한다.
654 + 1
=
655 [x - y]
1을 더하면 655가 나오는데, 이것은 우리의 원래 뺄셈 문제에 대한 정답이다.만약 우리가 첫 번째 단계에서 10가지 y의 보완책을 택했다면 우리는 1을 추가하는 마지막 단계를 건너뛸 수 있었을 것이다.null
숫자의 크기
다음 예에서 감산 결과는 x보다 숫자가 적다.
123410 [x, minuend] - 123401 [y, subrahend]
첫 번째 방법을 사용하면 nine의 x와 y의 보어의 합은 다음과 같다.
876589 [nines of x] + 123401 [y]
=
999990
나인의 999990의 보어는 000009이다.선행 0을 제거하면 9가 원하는 결과를 얻을 수 있다.null
subrahend, y가 minuend, x, 선행 0보다 작은 자릿수를 갖는 경우 두 번째 방법에서 추가해야 한다.이 0은 보어를 취할 때 선행 nines가 된다.예를 들면 다음과 같다.
48032 [x] - 391 [y]
다시 쓸 수 있다
48032 [x] - 00391 [y(선행 0 포함)]
00391을 nines의 보완물로 교체하고 1을 추가하면 다음과 같은 합계가 발생한다.
48032 [x] + 99608 [nines of y] + 1
=
147641
선두 "1"을 떨어뜨리면 정답은 47641이다.null
이항법
이진수 숫자를 매기다 | 원스 보완하다 |
---|---|
0 | 1 |
1 | 0 |
보완 방법은 각 비트를 뒤집어서 ('0'에서 '1'로, 그 반대로) 매우 쉽게 보완할 수 있기 때문에 2진법(라디 2)에서 특히 유용하다.1을 더하면 두 사람의 보완점을 얻을 수 있는데, 가장 중요한 부분까지 운반하는 것을 모의실험하여 수행할 수 있다.예를 들면 다음과 같다.
0110 0100 [x, 십진수 100] - 0001 0110 [y, 십진수 22]
합이 되다:
0110 0100 [x] + 1110 1001 [one's board of y = 1111 1111 - y] + 1 [두 개의 보어 = 1 0000 0000 - y] ======================10100 1110 [x + 1 0000 00000000 - y]
초기 "1"을 삭제하면 답이 나온다: 0100 1110(동일 십진수 78)
음수 표현
보완 방법은 일반적으로 피연산자가 양수이고 임의의 정수를 더하고 빼는 것은 일반적으로 부호를 비교하고, 큰 정수를 더하거나 더 작은 정수를 더하고, 그 결과에 정확한 부호를 부여함으로써 이루어진다는 점에서 y ≤ x, 논리적인 제약조건이다.null
x < y가 되면 어떻게 되는지 보자.이 경우 - y+ 이(가) b보다 작으므로 추가 후 교차할 "1"자릿수는 없을 것이다 예를 들어 (십진수).null
185 [x] - 329 [y]
y를 보완하고 추가하면 다음과 같은 이점을 얻을 수 있다.
185 [x] + 670 [nines' board of y] + 1
=
856
이때 b 이 경우 1000)를 빼서 계산을 완료할 수 있는 간단한 방법이 없다. 단순히 선행 1을 무시할 수는 없다.예상 답은 -144로, 보이는 것만큼 멀지 않다; 856은 우연히 10의 144의 보충역이다.이 문제는 다음과 같은 여러 가지 방법으로 해결할 수 있다.
- 문제를 무시하십시오.계산 전에 두 피연산자를 비교하여 적절한 순서로 입력할 수 있도록 하고, 결과가 타당한지 검증하기 때문에 음수를 지원하지 않는 계산장치를 조작하고 있다면 이는 합리적이다.
- 같은 방법으로 1000에서 856을 뺀 다음 결과에 음의 부호를 추가한다.
- 라디스가 긍정적인 라디스를 보완하는 것으로 음수를 나타낸다. / 미만의 숫자는 양수로 간주되며, 나머지는 음수로 간주된다(그리고 그 크기는 라딕스 보어를 사용하여 얻을 수 있다).이것은 첫 번째 숫자를 보고 기호를 결정할 수 있기 때문에 짝수 라디스에 가장 적합하다.예를 들어, 10의 보완 표기법에 있는 숫자는 첫 번째 숫자가 0, 1, 2, 3, 4이면 양이고 5, 6, 7, 8, 9이면 음수다.그리고 첫 번째 비트는 부호 비트로 간주될 수 있기 때문에 바이너리에서는 매우 잘 작동한다. 부호 비트가 0이면 양수, 1이면 음수.실제로 대부분의 현대 컴퓨터에서는 두 개의 보어가 서명된 숫자를 나타내기 위해 사용된다.
- 가장 유의한 숫자(x가 y보다 작다는 표시)에서 수행되지 않을 경우 결과를 보완한다.이것은 피연산자를 비교하고 스와핑하는 것보다 디지털 회로로 구현하는 것이 더 쉽다.그러나 라딕스보충제를 복용하려면 1을 추가해야 하기 때문에 직접 하기는 어렵다.다행히도 다음과 같은 추가사항을 극복하기 위해 트릭을 사용할 수 있다.감산할 때 항상 캐리어를 가장 작은 숫자로 설정하는 대신, 가장 중요한 숫자에서 이행을 수행하면 가장 중요한 숫자(end-around carrier라고 하는 작업)로 이월 입력이 사용된다.따라서 y ≤ x일 경우, 일반적으로 무시될 수 있는 가장 유의한 숫자의 캐리어가 추가되어 정확한 결과를 산출한다.그리고 만약 그렇지 않다면, 1은 추가되지 않고, 그 결과는 답의 라딕스 보완물 또는 감소된 라딕스 보완물보다 1이 적으며, 이는 얻는 데 추가가 필요하지 않다.사인 앤드 리퀴드(sign-and requirement)를 사용해 서명된 숫자를 표시하는 컴퓨터가 사용하는 방식이다.
실용화
보완 방법은 기어를 거꾸로 돌리는 대안으로 많은 기계식 계산기에서 사용되었다.예를 들면 다음과 같다.
- 파스칼의 계산기는 두 개의 결과 자릿수를 가지고 있었는데, 정상적인 결과를 나타내는 검은색 세트와 이것의 네인의 보완을 나타내는 빨간색 세트가 있었다.수평 슬래트가 이 세트들 중 하나를 덮기 위해 사용되었고, 다른 세트가 노출되었다.뺄셈으로, 적색 자릿수를 노출하여 0으로 설정하였다.그리고 나인의 미니언드의 보수가 들어갔다.어떤 기계에서 이것은 보완물의 내부 바퀴를 사용하여 미니언드를 다이얼하는 것으로 이루어질 수 있다(즉, 미니언드의 네인의 보완점을 정신적으로 결정할 필요 없이).이 데이터를 보완 창(빨간색 세트)에 표시하면서, 운영자는 네인의 축소보완물인 축소보완물을 볼 수 있었다.그런 다음 슬래트를 움직여 검은 자리(지금은 미니언드의 nine의 보어가 표시됨)를 노출시켰고, 다이얼을 돌려 하위 레이든드를 추가했다.마침내, 오퍼레이터는 정답을 읽기 위해 슬래트를 다시 움직여야 했다.
- Comptometer는 각 키의 정상 숫자와 함께 작은 유형으로 인쇄된 nines의 보완 숫자를 가지고 있었다.뺄셈을 하기 위해, 연산자는 하위 계산에서 1을 빼고 더 작은 숫자를 사용하여 결과를 입력하도록 기대되었다.보완하기 전에 1을 빼는 것은 이후에 1을 더하는 것과 같기 때문에, 운영자는 10의 하위조직을 효과적으로 추가할 것이다.또한 운영자는 답의 가장 왼쪽 숫자에 해당하는 "수축 컷오프 탭"을 눌러야 했다.이 탭은 캐리어가 그것을 지나 전파되는 것을 막았는데, 이는 결과에서 초기 1을 떨어뜨리는 Comptometer의 방법이다.[2]
- 커타 계산기는 뺄셈을 위해 보완하는 방법을 사용했고, 이것을 사용자로부터 간신히 숨겼다.숫자는 기기 측면을 따라 숫자 입력 슬라이드를 사용하여 입력되었다.각 슬라이드의 번호는 회전하는 "에클론 드럼"(예: "스텝 드럼")에 캠을 결합하는 기어 메커니즘에 의해 결과 카운터에 추가되었다.드럼은 악기 상단에 있는 크랭크를 사용하여 돌렸다.크랭크가 회전할 때 각 자릿수가 만나는 캠의 수는 해당 자릿수의 값에 의해 결정되었다.예를 들어 슬라이드를 "6" 위치로 설정하면 해당 위치에 해당하는 드럼 주위로 6개의 캠이 한 줄로 배치된다.뺄셈을 위해 드럼을 돌리기 전에 약간 이동시켰고, 이것은 다른 줄의 캠을 제자리에 이동시켰다.이 대체 행에는 네인의 숫자 보수가 포함되어 있었다.따라서, 추가하기 위해 제자리에 있었던 6개의 캠의 행은 이제 3개의 캠을 가진 행을 가지고 있었다.시프트 드럼은 또한 결과(보완 방법에 필요한 경우)에 1이 추가된 1개의 캠을 추가로 장착했다.결과 레지스터의 가장 중요한 숫자를 넘어 수행된 항상 현재의 10개의 보완 "과잉 흐름 1"은 사실상 폐기되었다.
컴퓨터에서
디지털 컴퓨터에서는 서명된 숫자에 사용되는 표현에 관계없이 보완 방법의 사용이 보편적이다.그러나 필요한 회로는 다음과 같은 표현에 따라 달라진다.
- 두 개의 보완 표현을 사용하는 경우, 뺄셈은 하위조정의 비트를 뒤집어서 가장 오른쪽 비트로 운반선을 설정하기만 하면 된다.
- 보완 표현을 사용하려면 하위 시스템의 비트를 뒤집고 가장 중요한 비트의 수행과 가장 중요한 비트의 수행(end-around carrier)을 가장 중요한 비트의 수행에 연결해야 한다(end-around carrie
- 부호표현을 사용하면 부호비트의 부호비트를 보완하고 덧셈만 하면 되지만, 부호비트를 비교하고, 다른 입력물 중 하나를 보완하며, 엔드 어라운드 캐리어를 구현하고, 가장 중요한 비트에서 운반물이 없는 경우 결과를 보완하면 된다.
수동 사용
회계장부를 손으로 쓸 때 오류를 바로 잡는 데 보완 방법이 쓰였다.숫자 열에서 항목을 제거하기 위해 회계사는 감산할 수 있는 숫자의 10의 보충으로 새로운 항목을 추가할 수 있다.이 항목의 숫자 위에 막대를 추가하여 해당 항목의 특수 상태를 표시했다.그 후 수정 결과를 얻기 위해 전체 수열의 숫자를 추가할 수 있었다.null
총액을 보충하는 것은 단일 단위 통화 1에서 통화 베이스의 정수 전력으로 상향된 통화에서 구매를 위해 변경을 하는 현금 관리자들에게 유용하다.10달러 지폐와 같이 10, 100, 1,000달러가 되는 소수 통화의 경우.null
초등학교 교육에서
초등학교에서 학생들은 때때로 정신적 산수에 유용한 지름길로 보충의 방법을 배우기도 한다.[3]뺄셈은 네인의 보완점 플러스 1인 10의 미분법을 첨가함으로써 이루어진다.이 덧셈의 결과는 차이가 양수일 것이 분명할 때 사용되며, 그렇지 않을 경우 덧셈의 결과에 대한 10의 보충이 음수로 표시된다.덧셈 기계에서 빼는 데도 같은 기법이 효과가 있다.null
참고 항목
- 2가지 보완 요소 – 2진 컴퓨터용 특수 케이스