हमें एक स्ट्रिंग दी जाती है जिसमें एक बाइनरी नंबर होता है। लक्ष्य पुनरावर्ती विधि का उपयोग करके समतुल्य दशमलव संख्या ज्ञात करना है।
एक द्विआधारी संख्या को निम्न विधि का उपयोग करके दशमलव में परिवर्तित किया जा सकता है-:एलएसबी से एमएसबी तक जाना और प्रत्येक को 2 i की शक्ति से गुणा करना जहां 0<=i<=नहीं। अंकों की संख्या और उसके सभी पिछले परिणाम।
आइए इसके लिए विभिन्न इनपुट आउटपुट परिदृश्य देखें -
इनपुट − बिनस्ट्र [] ="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
=50पी>
इनपुट -बिनस्ट्र[] ="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,length) इनपुट लेता है और एक पुनरावर्ती दृष्टिकोण का उपयोग करके गणना की गई संख्या देता है।
-
यदि हम अंतिम वर्ण पर हैं जो LSB है, तो उसका दशमलव लौटा दें क्योंकि यह वही होगा। (1 यानी 2 से गुणा करें 0 )
-
अन्यथा अस्थायी =बाइनरी [i] -'0' सेट करें। इसका दशमलव मान।
-
अब तापमान को 2 से गुणा करें len-i-1 अस्थायी का उपयोग करना<
-
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