বুথের অ্যালগরিদম হল একটি গুণিতক অ্যালগরিদম যা 2 এর কমপ্লিমেন্ট নোটেশনে দুটি স্বাক্ষরিত বাইনারি সংখ্যাকে গুণ করে। বুথ ডেস্ক ক্যালকুলেটর ব্যবহার করত যেগুলি যোগ করার চেয়ে দ্রুত স্থানান্তরিত হয় এবং তাদের গতি বাড়ানোর জন্য অ্যালগরিদম তৈরি করেছিল৷
অ্যালগরিদম
শুরু করুন BR-এ গুনিতক এবং QR-এ গুণক রাখুন এবং তারপর অ্যালগরিদম নিম্নলিখিত শর্ত অনুযায়ী কাজ করে:1. যদি Qn এবং Qn+1 একই হয় অর্থাৎ 00 বা 11 1 বিট দ্বারা গাণিতিক পরিবর্তন করে। 2. যদি Qn Qn+1 =10 করে A=A + BR এবং 1 বিট দ্বারা গাণিতিক স্থানান্তর সম্পাদন করে। 3. যদি Qn Qn+1 =01 করে A=A – BR এবং 1 বিট দ্বারা গাণিতিক স্থানান্তর সম্পাদন করে।উদাহরণ কোড
#includeনেমস্পেস ব্যবহার করে std;void add(int a[], int x[], int q);void complement(int a[], int n) { int i; int x[8] ={ NULL }; x[0] =1; জন্য (i =0; i 1) { ac[i] =ac[i] % 2; c =1; অন্য c =0; } } void ashr(int ac[], int qr[], int &qn, int q) { int temp, i; temp =ac[0]; qn =qr[0]; cout <<"\t\tashr\t\t"; জন্য (i =0; i =0; i--) cout <=0; i--) cout < > brn; cout <<"\nmultiplicand="; জন্য (i =brn - 1; i>=0; i--) cin>> br[i]; (i =brn - 1; i>=0; i--) mt[i] =br[i] এর জন্য //মাল্টিপ্লিক্যান্ড; পরিপূরক (mt, brn); cout <<"\n গুণক bit=" এর সংখ্যা; cin>> qrn; sc =qrn; cout <<"Multiplier="; জন্য (i =qrn - 1; i>=0; i--) cin>> qr[i]; qn =0; তাপমাত্রা =0; cout <<"qn\tq[n+1]\t\tBR\t\tAC\tQR\t\tsc\n"; cout <<"\t\t\tinitial\t\t"; প্রদর্শন (ac, qr, qrn); cout <<"\t\t" < =0; i--) cout < =0; i--) cout < আউটপুট
<প্রে>-- সাইনড 2 এর পরিপূরক ফর্মে গুণক এবং গুণক লিখুন যদি ঋণাত্মক হয়-- গুণিতক বিটের সংখ্যা=5 গুণিতক=0 1 1 1 1নং। গুণক বিট =5lultiplier =1 0 1 1 1QN Q [n + 1] ব্রা QR SCINITIAL 000000 10111 51 0 বিয়োগ করা BR 10001ASHR 11000 11011 41 1 ASHR 11100 01010 31 1 ASHR 11110 00101 Adding BR 01101ASHR 00110 10011 11 0 বিয়োগ BR 10111ashr 11011 11001 0Result=11011 11001