>백엔드 개발 >C++ >C++에서 부호 없는 정수 복구 나누기 알고리즘 구현

C++에서 부호 없는 정수 복구 나누기 알고리즘 구현

PHPz
PHPz앞으로
2023-09-12 16:01:011746검색

나누기 알고리즘을 사용하여 부호 없는 정수를 나누는 방법에 대해 토론합니다. 일부 분할 알고리즘은 종이에 구현되고 다른 알고리즘은 디지털 회로에 구현됩니다. 분할 알고리즘에는 느린 분할 알고리즘과 빠른 분할 알고리즘의 두 가지가 있습니다. 느린 분할 알고리즘에는 복구 알고리즘, 비실행 복구 알고리즘, SRT 및 비복구 알고리즘이 포함됩니다.

이 튜토리얼에서는 0 해결 방법

여기서는 Q 레지스터를 사용하여 몫을 저장하고, 레지스터 A를 사용하여 나머지를 저장하고, M 레지스터를 사용하여 제수를 저장하겠습니다. A의 초기 값은 0으로 유지되고 해당 값이 복원되므로 메서드가 나누기를 다시 시작합니다.

  • 값으로 레지스터 초기화,

    • 값으로 레지스터 초기화, p>

      • Q = 피제수,

      • A = 0,

      • M = 제수,
      • N = 배당 숫자 숫자.

    • AQ를 왼쪽으로 이동한다는 것은 레지스터 A와 Q를 하나의 단위로 처리한다는 의미입니다.

    • A를 M에서 빼고 A에 저장합니다.

    • A의 최상위 비트를 확인하세요:

      • 0이면 최하위 비트를 1로 설정하세요.

      • 그렇지 않으면 최하위 비트를 0으로 설정하세요.

    • A의 값을 복원하고 카운터 N의 값을 감소시킵니다.

    • N = 0이면 루프를 중단하고, 그렇지 않으면 2단계로 이동합니다.

    • 몫은 레지스터 Q에 저장됩니다.

    Flowchart

    C++에서 부호 없는 정수 복구 나누기 알고리즘 구현

    위 방법에 대한 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;
    }

    Output

    Quotient: 2

    결론

    이 튜토리얼에서는 부호 없는 정수에 대한 복구 분할 알고리즘에 대해 논의했습니다. 우리는 순서도의 도움과 비트 연산 적용을 통해 이 문제를 해결하는 간단한 방법을 논의했습니다. 또한 이 문제를 해결하기 위해 C, Java, Python 등과 같은 프로그래밍 언어를 사용하여 구현할 수 있는 C++ 프로그램에 대해서도 논의했습니다. 이 튜토리얼이 도움이 되었기를 바랍니다.

위 내용은 C++에서 부호 없는 정수 복구 나누기 알고리즘 구현의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 tutorialspoint.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제