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

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

PHPz
Lepaskan: 2023-09-12 16:01:01
ke hadapan
1760 orang telah melayarinya

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;
    }
    Salin selepas log masuk
    e

    output

    Quotient: 2
    Salin selepas log masuk
    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!

sumber:tutorialspoint.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan