首頁 >後端開發 >C++ >在C++中實作無符號整數的恢復除法演算法

在C++中實作無符號整數的恢復除法演算法

PHPz
PHPz轉載
2023-09-12 16:01:011734瀏覽

討論使用除法演算法除以無符號整數。有些除法演算法應用在紙上,有些則在數位電路上實現。除法演算法有兩種:慢速除法演算法和快速除法演算法。慢除法演算法包括恢復演算法、非執行恢復演算法、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中。

    流程圖

    在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;
    }

    輸出

    Quotient: 2

    結論

    在本教程中,我們討論了無符號整數的恢復除法演算法。我們討論了一種借助流程圖和應用位元運算來解決此問題的簡單方法。我們也討論了解決此問題的 C 程序,我們可以使用 C、Java、Python 等程式語言來實作。我們希望本教學對您有所幫助。

以上是在C++中實作無符號整數的恢復除法演算法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除