나누기 알고리즘을 사용하여 부호 없는 정수 나누기에 대해 논의합니다. 일부 분할 알고리즘은 종이에 적용되고 다른 알고리즘은 디지털 회로에 구현됩니다. 분할 알고리즘에는 느린 분할 알고리즘과 빠른 분할 알고리즘의 두 가지 유형이 있습니다. 저속분할 알고리즘에는 복원, 미수행 복원, SRT, 미복구 알고리즘이 있습니다.
이 자습서에서는 0 <제수 <피제수
라고 가정하고 복원 알고리즘에 대해 설명합니다.해결책을 찾기 위한 접근 방식
여기서는 레지스터 Q를 사용하여 몫을 저장하고 레지스터 A를 사용하여 나머지를 저장하고 M을 사용하여 제수를 저장합니다. A의 초기값을 0으로 유지하고 그 값을 되돌리기 때문에 나눗셈을 복원하는 방식입니다.
-
값으로 레지스터 초기화,
-
Q =배당금,
-
A =0,
-
M =제수,
-
N =피제수 비트 수.
-
-
왼쪽 시프트 AQ는 레지스터 A와 Q를 단일 단위로 취하는 것을 의미합니다.
-
A에서 M을 빼고 A에 저장합니다.
-
A의 최상위 비트 확인:
-
0이면 최하위 비트를 1로 설정합니다.
-
그렇지 않으면 최하위 비트를 0으로 설정합니다.
-
-
A의 값을 복원하고 카운터 N의 값을 감소시킵니다.
-
N =0이면 루프를 끊습니다. 그렇지 않으면 2단계로 이동합니다.
-
몫은 레지스터 Q에 저장됩니다.
흐름도
예시
위 접근 방식에 대한 C++ 코드
#include <iostream> using namespace std; int main(){ // initializing all the variables with Dividend = 9, Divisor = 2. int Q = 8,q=1,M=3; short N = 4; int A = Q; M <<= N; // loop for division by bit operation. for(int i=N-1; i>=0; i--) { A = (A << 1)- M; // checking MSB of A. if(A < 0) { q &= ~(1 << i); // set i-th bit to 0 A = A + M; } else { q |= 1 << i; // set i-th bit to 1 } } cout << "Quotient: "<< q; return 0; }
출력
Quotient: 2
결론
이 자습서에서는 부호 없는 정수에 대한 나누기 알고리즘 복원에 대해 설명했습니다. 우리는 순서도를 사용하고 비트 연산을 적용하여 이 문제를 해결하는 간단한 접근 방식에 대해 논의했습니다. 우리는 또한 C, Java, Python 등과 같은 프로그래밍 언어로 할 수 있는 이 문제에 대한 C++ 프로그램에 대해 논의했습니다. 이 튜토리얼이 도움이 되기를 바랍니다.