Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Melaksanakan algoritma pembahagian pemulihan integer yang tidak ditandatangani dalam C++

Melaksanakan algoritma pembahagian pemulihan integer yang tidak ditandatangani dalam C++

PHPz
PHPzke hadapan
2023-09-12 16:01:011698semak imbas

Bincang membahagi integer tidak bertanda menggunakan algoritma bahagi. Sesetengah algoritma bahagian dilaksanakan di atas kertas, yang lain dilaksanakan pada litar digital. Terdapat dua algoritma pembahagian: algoritma pembahagian perlahan dan algoritma pembahagian pantas. Algoritma pembahagian perlahan termasuk algoritma pemulihan, algoritma pemulihan bukan pelaksanaan, SRT dan algoritma bukan pemulihan.

Dalam tutorial ini, kita akan membincangkan algoritma pemulihan dengan andaian 0 Kaedah penyelesaian

Di sini, kami akan menggunakan daftar Q untuk menyimpan hasil bahagi, daftar A untuk menyimpan baki, dan M untuk menyimpan pembahagi. Nilai awal A kekal pada 0, dan nilainya dipulihkan, itulah sebabnya kaedah menyambung semula pembahagian.

  • Mulakan daftar dengan nilai,

    • Memulakan daftar dengan nilai, p>

      • Q = Dividen,

      • A = 0,

      • N = digit dividen nombor.
      • Menganjak AQ ke kiri bermakna menganggap daftar A dan Q sebagai satu unit.
    • A ditolak daripada M dan disimpan dalam A.

    • Semak bit paling ketara A:

    • Jika 0, tetapkan bit paling ketara kepada 1.

      • Jika tidak, tetapkan bit paling tidak ketara kepada 0.

      • Pulihkan nilai A dan kurangkan nilai pembilang N.
    • Jika N = 0, putuskan gelung jika tidak, pergi ke langkah 2.

    • Hasil bagi disimpan dalam daftar Q.

    • flowChart

    example

    Melaksanakan algoritma pembahagian pemulihan integer yang tidak ditandatangani dalam C++

    c ++ Code Untuk kaedah di atas

    #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;
    }
    e

    output

    Quotient: 2
    econclusion

    in tutorial ini, kami membincangkan algoritma bahagian pemulihan untuk integer yang tidak ditandatangani. Kami membincangkan cara mudah untuk menyelesaikan masalah ini dengan bantuan carta alir dan menggunakan operasi bit. Kami juga membincangkan program C++ untuk menyelesaikan masalah ini, yang boleh kami laksanakan menggunakan bahasa pengaturcaraan seperti C, Java, Python, dll. Kami harap anda mendapati tutorial ini membantu.

Atas ialah kandungan terperinci Melaksanakan algoritma pembahagian pemulihan integer yang tidak ditandatangani dalam C++. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam