나누기 알고리즘을 사용하여 부호 없는 정수를 나누는 방법에 대해 토론합니다. 일부 분할 알고리즘은 종이에 구현되고 다른 알고리즘은 디지털 회로에 구현됩니다. 분할 알고리즘에는 느린 분할 알고리즘과 빠른 분할 알고리즘의 두 가지가 있습니다. 느린 분할 알고리즘에는 복구 알고리즘, 비실행 복구 알고리즘, SRT 및 비복구 알고리즘이 포함됩니다.
이 튜토리얼에서는 0 해결 방법
여기서는 Q 레지스터를 사용하여 몫을 저장하고, 레지스터 A를 사용하여 나머지를 저장하고, M 레지스터를 사용하여 제수를 저장하겠습니다. A의 초기 값은 0으로 유지되고 해당 값이 복원되므로 메서드가 나누기를 다시 시작합니다.
값으로 레지스터 초기화,
값으로 레지스터 초기화, p>
Q = 피제수,
A = 0,
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++ 프로그램에 대해서도 논의했습니다. 이 튜토리얼이 도움이 되었기를 바랍니다.
위 내용은 C++에서 부호 없는 정수 복구 나누기 알고리즘 구현의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!