Rumah > Artikel > pembangunan bahagian belakang > Melaksanakan algoritma pembahagian pemulihan integer yang tidak ditandatangani dalam C++
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,
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.
Jika N = 0, putuskan gelung jika tidak, pergi ke langkah 2.
Hasil bagi disimpan dalam daftar Q.
flowChart
#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
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!