C++ میں بائنری سے اعشاریہ کی تبدیلی

C My Baynry S A Shary Ky Tbdyly



آرٹیکل میں، ہم C++ پروگرام میں بائنری ویلیو کو ڈیسیمل ویلیو میں تبدیل کرتے ہوئے دیکھیں گے۔ بائنری نمبر کو 0 اور 1 ہندسوں سے ظاہر کیا جاتا ہے، جبکہ اعشاریہ کی قدروں میں وہ ہندسے ہوتے ہیں جن کی حد 0 سے 9 تک ہوتی ہے۔ بائنری سے اعشاریہ کی تبدیلی کو پورا کرنے کے لیے، بائنری قدر کو 2 سے ضرب کیا جانا چاہیے جو کہ 'کی طاقت' سے بڑھے n' دائیں سے شروع ہو کر بائیں طرف بڑھتے ہوئے ایک اعلی 'n' کے ساتھ۔ آئیے اس کو کوڈ میں لاگو کرتے ہیں تاکہ بائنری کو ڈیسیمل ویلیو میں تبدیل کیا جا سکے۔

مثال 1: 'While' لوپ کا استعمال کرتے ہوئے بائنری سے اعشاریہ تک کا پروگرام

نمبر کو بائنری سے ڈیسیمل میں تبدیل کرنے کے لیے ہمارے پاس درج ذیل پروگرام ہے۔ پروگرام کے اندر، ہم بائنری کو اعشاریہ میں تبدیل کرنے کے لیے 'while' لوپ کا استعمال کرتے ہیں۔

# شامل کریں
#include

استعمال کرتے ہوئے نام کی جگہ std ;

int کنورشن آف بن ( طویل طویل ) ;

int مرکزی ( ) {
طویل طویل ایک پر ;
cout << 'بائنری نمبر درکار ہے:' ;
کھانا >> ایک پر ;
cout << ایک پر << 'بائنری میں =' << کنورشن آف بن ( ایک پر ) << 'اعشاریہ میں' ;
واپسی 0 ;
}

int کنورشن آف بن ( طویل طویل ایک پر ) {
int تو = 0 ، ایکس = 0 ، باقی ;

جبکہ ( ایک پر ! = 0 ) {
باقی = ایک پر % 10 ;
ایک پر / = 10 ;
دسمبر + = باقی * پاؤ ( 2 ، ایکس ) ;
++ ایکس ;
}

واپسی تو ;
}

یہاں، ہم ان پٹ اور آؤٹ پٹ اسٹریمز کے لیے 'iostream' ہیڈر فائل اور پروگرام میں ریاضیاتی فنکشن کو استعمال کرنے کے لیے 'cmath' کی وضاحت کرتے ہیں۔ اس کے بعد، ہم ConversionOfBin() فنکشن کی وضاحت کرتے ہیں جہاں 'لمبی لمبی' قسم کا پیرامیٹر گزر جاتا ہے۔ اگلا، پروگرام کو انجام دینے کے لیے ہمارے پاس مین() فنکشن کال ہے۔ ہم مین () فنکشن کے اندر ایک طویل انٹر ٹائپ ویری ایبل کا اعلان کرتے ہیں جسے 'num' کہتے ہیں۔







اس کے بعد، ConversionOfBin() فنکشن ان پٹ بائنری نمبر کو ڈیسیمل نمبر میں تبدیل کرتا ہے۔ اس کے لیے، ہمارے پاس ڈرائیور کوڈ کے بعد ConversionOfBin() فنکشن کی تعریف ہے۔ ConversionOfBin() فنکشن کو 'num' متغیر کے ساتھ پاس کیا جاتا ہے جس میں بائنری نمبر ہوتا ہے۔ پھر، ہم بائنری نمبر کو 'num' میں اعشاریہ کی قدر میں تبدیل کرنے کے لیے 'while' لوپ کو کال کرتے ہیں۔ اس سے پہلے، ہم 'deci'، 'x' اور 'remainder' متغیر کو '0' کی قدر کے ساتھ شروع کرتے ہیں۔



'جبکہ' لوپ کے اندر، بائنری نمبر کی سب سے دائیں قدر کی نمائندگی کرنے کے لیے ڈویژن آپریشن کیا جاتا ہے۔ تقسیم کے نتائج 'بقیہ' متغیر میں محفوظ کیے جاتے ہیں۔ پھر، ہم بقیہ کے نتائج اور طاقت کے نتائج کو 'deci' متغیر میں شامل کرتے ہیں۔ 'x' متغیر 2 کی فعال طاقت کا اندازہ لگاتا رہتا ہے۔



مخصوص بائنری نمبروں کو اعشاریہ اقدار میں تبدیل کرنے کے نتائج C++ کنسول میں حاصل کیے جاتے ہیں:





مثال 2: 'فور' لوپ کا استعمال کرتے ہوئے بائنری سے اعشاریہ کا پروگرام

بائنری سے اعشاریہ میں تبدیلی 'جبکہ' لوپ کا استعمال کرتے ہوئے مکمل کی گئی۔ تاہم، ہم بائنری بٹس کو ڈیسیمل نمبر میں تبدیل کرنے کے لیے 'for' لوپ کا طریقہ بھی استعمال کر سکتے ہیں۔



# شامل کریں
#include

int مرکزی ( ) {
std :: تار بن ;
std :: cout << 'ان پٹ بائنری نمبر:' ;
std :: کھانا >> بن ;

int دسمبر = 0 ;
int baseIs = 1 ;

کے لیے ( int a = بن لمبائی ( ) - 1 ; a >= 0 ; a -- ) {
اگر ( بن [ a ] == '1' ) {
دسمبر + = baseIs ;
}
baseIs * = 2 ;
}

std :: cout << 'اعشاریہ میں نتائج:' << دسمبر << std :: endl ;

واپسی 0 ;
}

یہاں، ہم مین() فنکشن پروگرام کے ساتھ شروع کرتے ہیں جہاں ہمارے پاس 'std::string' متغیر ہے جو کہ صارف کے بائنری نمبر کو پرامپٹ میں ذخیرہ کرنے کے لیے 'bin' ہے۔ ابتدائی طور پر، پرامپٹ صارف سے 'cout' بیان کا استعمال کرتے ہوئے بائنری نمبر داخل کرنے کو کہے گا۔ پھر، 'cin' کمانڈ اس بائنری نمبر کو پڑھے گی۔ اس کے بعد، ہم اعشاریہ کے برابر حاصل کرنے کے لیے '0' کی قدر کے ساتھ 'dec' متغیر اور '1' کی قدر کے ساتھ 'baseIs' متغیر شروع کرتے ہیں۔

پھر، ہم ایک 'for' لوپ کو کہتے ہیں جو مخصوص بائنری کے ہر ایک نمبر پر دائیں سے بائیں لوپ کرتا ہے۔ لوپ کے اندر، ہمارے پاس ایک 'if' شرط ہے اس بات کی تصدیق کرنے کے لیے کہ آیا بائنری نمبر 1 ہے۔ اگر یہ 1 ہے، تو ڈیسیمل ویلیو کو 'dec' متغیر میں شامل کیا جاتا ہے۔ 'baseIs' متغیر میں ہر تکرار پر 1 کے ساتھ ضرب کرنے کی طاقت 2 ہے۔

بائنری نمبر کی قدر اور اس کا اعشاریہ قدر میں تبدیل ہونا پرامپٹ اسکرین پر دکھایا گیا ہے:

مثال 3: بائنری سٹرنگ سے اعشاریہ تک کا پروگرام

بائنری سٹرنگ ویلیو اب اس کی قدر کو ڈیسیمل ویلیو میں تبدیل کرنے کے لیے بیان کی گئی ہے۔ بائنری سٹرنگ ویلیو کو ڈیسیمل ویلیو میں تبدیل کرنے کے لیے درج ذیل عمل درآمد کیا جاتا ہے:

# شامل کریں
#include
استعمال کرتے ہوئے نام کی جگہ std ;

int binToDec ( string val )
{
تار کی قدر = val ;
int decimal_value = 0 ;

int بنیادی_قدر = 1 ;

int صرف = قدر. لمبائی ( ) ;
کے لیے ( int m = صرف - 1 ; m >= 0 ; m -- ) {
اگر ( val [ m ] == '1' )
decimal_value + = بنیادی_قدر ;
بنیادی_قدر = بنیادی_قدر * 2 ;
}

واپسی decimal_value ;
}

int مرکزی ( )
{
string val = '11100101' ;
cout << binToDec ( val ) << endl ;
}

یہاں، ہم بائنری ہندسوں کو اعشاریہ کی قدروں میں تبدیل کرنے کے لیے ایک BinToDec() فنکشن بنانے کے ساتھ شروع کرتے ہیں۔ BinToDec() فنکشن سٹرنگ کی قسم کی 'val' دلیل لیتا ہے۔ BinToDec() فنکشن کے اندر، ہم 'value' متغیر کو 'val' متغیر کے ساتھ شروع کرتے ہیں جو اس بات کی نمائندگی کرتا ہے کہ 'val' متغیر کی قدر 'ویلیو' متغیر میں محفوظ کی جائے گی۔ پھر، ہم ایک نئے متغیر کا اعلان کرتے ہیں، 'decimal_value'، جسے 0 کی قدر کے ساتھ تفویض کیا گیا ہے۔

اسی طرح، 'base_value' متغیر کو 1 کی قدر کے ساتھ سیٹ اور شروع کیا جاتا ہے۔ اس کے بعد، ہم 'len' متغیر کی وضاحت کرتے ہیں جہاں length() فنکشن کو بائنری نمبر کی لمبائی حاصل کرنے کے لیے کہا جاتا ہے۔ متغیر کی ابتدا کے بعد، ہمارے پاس 'for' لوپ تکرار ہے۔ 'for' لوپ ہر بائنری نمبر کے ہندسے کو دائیں سے بائیں دہراتی ہے۔

اس کے بعد، ہمارے پاس ایک مین() فنکشن ہے جہاں بائنری نمبر کو سٹرنگ ویلیو کے طور پر 'val' ویری ایبل کے لیے مخصوص کیا جاتا ہے جو ڈیسیمل ویلیو میں تبدیل ہو جاتا ہے جیسا کہ ہم BinToDec(val) فنکشن کو 'cout' کمانڈ کے ساتھ کہتے ہیں۔

سٹرنگ قسم کی بائنری ویلیو اب ڈیسیمل ویلیو میں تبدیل ہو گئی ہے جیسا کہ درج ذیل میں دکھایا گیا ہے۔

مثال 4: بٹ سیٹ کلاس کا استعمال کرتے ہوئے بائنری سے اعشاریہ تک کا پروگرام

مزید برآں، ہم پروگرام میں C++ کی 'bitset' کلاس کی وضاحت کر کے بائنری نمبر کو اعشاریہ نمبر میں تبدیل کر سکتے ہیں۔ یہ وہ افعال فراہم کرتا ہے جن کے ذریعے تبادلوں کا طریقہ کار بہت آسان ہے۔

# شامل کریں
# شامل کریں

int مرکزی ( ) {
std :: تار بائنری ;
std :: cout << 'براہ کرم بائنری نمبر فراہم کریں:' ;
std :: کھانا >> بائنری ;

std :: بٹ سیٹ < 64 > بائنری ( بائنری ) ;
غیر دستخط شدہ طویل اعشاریہ نمبر = بائنری بہت لمبا ( ) ;

std :: cout << 'اعشاریہ نمبر:' << اعشاریہ نمبر << std :: endl ;

واپسی 0 ;
}

یہاں، ہم نے ہیڈر میں C++ کی 'bitset' لائبریری سیٹ کی ہے جو بائنری ویلیوز کے ساتھ کام کرتے وقت بہت مددگار ہے۔ اس کے بعد، ہمارے پاس مین() فنکشن کی تعریف ہے جہاں ہم 'std::string' کو 'binaryIs' متغیر کا اعلان کرنے کے لیے استعمال کرتے ہیں۔ 'binaryIs' متغیر سٹرنگ میں بائنری کی قدر کو محفوظ کرتا ہے۔ اگلا، ہم صارف سے صارف کے پرامپٹ میں بائنری نمبر شامل کرنے کو کہتے ہیں اور اسے 'cin' کمانڈ کے ذریعے پڑھا جاتا ہے۔ اس کے بعد، ہم بٹس کے سائز کو ایڈجسٹ کرتے ہیں جو 64 بٹس انٹیجر ہو سکتے ہیں۔ پھر، to_ulong() فنکشن کو 'bitset' کلاس سے 'decimalNumber' متغیر میں بلایا جاتا ہے۔ to_ulong() فنکشن بٹس کے سیٹ کو بغیر دستخط شدہ لمبی ڈیٹا کی قسم میں تبدیل کرتا ہے۔ آخر میں، ہم صارف کی طرف سے دی گئی بائنری ویلیو کی ڈیسیمل ویلیو پرنٹ کرنے کے لیے 'cout' کمانڈ استعمال کرتے ہیں۔

صارف کی طرف سے فراہم کردہ بائنری قدر اب اعشاریہ قدر میں تبدیل ہو گئی ہے:

نتیجہ

آخر میں، ہم نے بائنری ویلیو کو ڈیسیمل ویلیو میں تبدیل کرنے کے طریقوں کا احاطہ کیا۔ ہم نے 'for' لوپ، 'While' لوپ کا استعمال کیا اور بائنری کنورژن کو ڈیسیمل کے لیے بٹ سیٹ کلاس اپروچ کیا۔ یہ نقطہ نظر بائنری نمبروں کو اعشاریہ نظام میں تبدیل کرتا ہے جو پڑھنے اور سمجھنے میں سہولت فراہم کرتا ہے۔