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

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

PHPz
풀어 주다: 2023-09-12 16:01:01
앞으로
1717명이 탐색했습니다.

나누기 알고리즘을 사용하여 부호 없는 정수를 나누는 방법에 대해 토론합니다. 일부 분할 알고리즘은 종이에 구현되고 다른 알고리즘은 디지털 회로에 구현됩니다. 분할 알고리즘에는 느린 분할 알고리즘과 빠른 분할 알고리즘의 두 가지가 있습니다. 느린 분할 알고리즘에는 복구 알고리즘, 비실행 복구 알고리즘, 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으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿