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

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

PHPz
發布: 2023-09-12 16:01:01
轉載
1746 人瀏覽過

討論使用除法演算法除以無符號整數。有些除法演算法應用在紙上,有些則在數位電路上實現。除法演算法有兩種:慢速除法演算法和快速除法演算法。慢除法演算法包括恢復演算法、非執行恢復演算法、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
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板