আমাদের একটি বাইনারি সংখ্যা সম্বলিত একটি স্ট্রিং দেওয়া হয়েছে। লক্ষ্য হল পুনরাবৃত্ত পদ্ধতি ব্যবহার করে সমতুল্য দশমিক সংখ্যা খুঁজে বের করা।
একটি বাইনারি সংখ্যাকে নিম্নলিখিত পদ্ধতি ব্যবহার করে দশমিকে রূপান্তরিত করা যেতে পারে-:LSB থেকে MSB তে ট্র্যাভার্স করুন এবং প্রতিটিকে 2 i শক্তি দিয়ে গুণ করুন যেখানে 0<=i<=no. সংখ্যা এবং এর পূর্ববর্তী সমস্ত ফলাফল।
আসুন এর জন্য বিভিন্ন ইনপুট আউটপুট পরিস্থিতি দেখি -
ইনপুট − binStr[] ="110010"
আউটপুট − প্রদত্ত বাইনারির সমতুল্য দশমিক:50
ব্যাখ্যা −যদি আমরা 110010 কে দশমিকে রূপান্তর করি তাহলে সংখ্যা হবে:-
=0*2 0 +1*2 1 +0*2 2 +0*2 3 +1*2 4 +1*2 5
=0+2+0+0+16+32
=৫০
ইনপুট − binStr[] ="0011"
আউটপুট − প্রদত্ত বাইনারির সমতুল্য দশমিক:3
ব্যাখ্যা − যদি আমরা 110010 কে দশমিকে রূপান্তর করি তাহলে সংখ্যা হবে:-
=1*2 0 +1*2 1 +0*2 2 +0*2 3
=1+2+0+0
=3
নিম্নলিখিত প্রোগ্রামে ব্যবহৃত পদ্ধতি
এই পদ্ধতিতে আমরা পুনরাবৃত্ত ফাংশন bintoDecimal(strBin,length) ব্যবহার করছি যা ইনপুট স্ট্রিং এবং এর দৈর্ঘ্য নেয় এবং প্রতিটি অক্ষরের জন্য এটি দশমিকে রূপান্তর করে এবং 2 i দিয়ে গুণ করে। . এতে পূর্ববর্তী ফলাফল যোগ করুন।
-
একটি বাইনারি নম্বর ধারণকারী ইনপুট স্ট্রিং strBin[] নিন।
-
strlen(strBin) ব্যবহার করে এর দৈর্ঘ্য গণনা করুন।
-
ফাংশন bintoDecimal(strBin,দৈর্ঘ্য) ইনপুট নেয় এবং একটি পুনরাবৃত্ত পদ্ধতি ব্যবহার করে গণনা করা সংখ্যা ফেরত দেয়।
-
যদি আমরা শেষ অক্ষর থাকি যা LSB হয়, তাহলে এর দশমিক ফেরত দিন কারণ এটি একই হবে। (1 দিয়ে গুণ করা হয়েছে অর্থাৎ 2 0 )
-
অন্যথায় temp=binary[i]-'0' সেট করুন। এর দশমিক মান।
-
এখন 2 len-i-1 দিয়ে তাপমাত্রা গুণ করুন temp<
ব্যবহার করে -
temp=temp+bintoDecimal(binary,len,i+1) ব্যবহার করে temp-এ অন্যান্য অঙ্কের ফলাফল যোগ করুন।
-
পুনরাবৃত্ত শেষে টেম্প রিটার্ন।
-
গণনাকৃত দশমিক প্রধানে প্রিন্ট করুন।
উদাহরণ
#include<bits/stdc++.h> using namespace std; int bintoDecimal(char binary[],int len, int i=0){ if (i == len-1) return (binary[i] - '0'); int temp=binary[i]-'0'; temp=temp<<len-i-1; temp=temp+bintoDecimal(binary,len,i+1); return (temp); } int main(){ char strBin[] = "11010"; int length=strlen(strBin); cout <<"Equivalent Decimal of given binary: "<<bintoDecimal(strBin,length) << endl; return 0; }
আউটপুট
যদি আমরা উপরের কোডটি চালাই তবে এটি নিম্নলিখিত আউটপুট তৈরি করবে
Equivalent Decimal of given binary: 26