Conversion of Decimal to Binary in C: कई बार हमें किसी Integer मान की Binary Value के साथ प्रक्रिया करने की जरूरत पड जाती है। इस स्थिति में हमें किसी मान के Binary Equivalent को Screen पर Display करने की जरूरत पडती है। लेकिन “C” Language में कोई ऐसा Function नहीं है, जो किसी Integer मान की Binary को Screen पर Display करता हो। फिर भी “C” Language में उपलब्ध Bitwise Operators का प्रयोग करके हम एक ऐसा Function Create कर सकते हैं, जो किसी Integer संख्या की Binary Value को Screen पर Display कर सकता है।
इस Function में Formal Argument Accept करने के लिए Formal Variable n लिया है। किसी भी Operand के Bit-Pattern को 16 Digits में Show किया जाता है और इस 16 Digit के Bit-Pattern में Bits हमेंशा Right Side से Fill होना शुरू होते हैं और अन्तिम Bit हमेंशा Left Side में Fill होता है। जबकि जिस क्रम में ये Bits Fill होते हैं, उसी क्रम में यदि इन्हे Screen पर Print कर दिया जाए, तो Print होने वाला Bit-Pattern, Real Bit-Pattern से बिल्कुल विपरीत होगा।
इसलिए ये जरूरी है कि किसी भी Operand के Bit-Pattern की अन्तिम Location के Bit को Screen पर सबसे पहले Print किया जाए व प्रथम Bit को सबसे अंत में, ताकि Print होने वाला Bit-Pattern वास्तविक Bit-Pattern हो।
इसी वजह से हमने इस Function में एक for Loop चलाया है और इस Loop को Increment ना करके Decrement किया है ताकि सर्वप्रथम 15th Bit की ON या OFF स्थिति Print हो और Bit-Pattern के प्रथम Bit की स्थिति सबसे अंत में Print हो। इस for Loop के Variable का प्रारम्भिक मान 15 दिया है, ताकि Operand के Bit-Pattern की 15th Location का Bit सर्वप्रथम Print हो।
इस Loop के Variable को क्रम से Decrement किया गया है, ताकि 15th Location का Bit Print हो जाने के बाद 14th Location का Bit Print हो। इस प्रकार से ये क्रम 0 तक चलाया गया है, ताकि किसी भी Operand के Bit-Pattern की Bits 16 Digits तक Print हो।
किसी Bit-Pattern को एक Bit Left में Shift किया जाए, तो Bit-Pattern के Operand का मान दुगुना हो जाता है।
यदि इसी Concept का उपयोग किया जाए तो हम कह सकते हैं कि हमें एक ऐसे Bit-Pattern की जरूरत होगी जिसका मान Loop के प्रथम Iteration पर
1000000000000000 हो ताकि हम 15th Bit की ON या OFF स्थिति को Print कर सकें। फिर Loop के दूसरे Iteration में इस Mask का Bit-Pattern 0100000000000000 हो ताकि हम 14th Bit की स्थिति को Print कर सकें और इसी क्रम में Loop के अन्तिम Iteration पर इस Mask का Bit-Pattern 0000000000000001 हो जाए, ताकि हम Operand के प्रथम Bit की स्थिति को Print कर सकें।
यदि हम प्रथम Bit के Pattern को देखें तो ये अंक 1 का Bit-Pattern है। यानी 0000000000000001 Bit-Pattern को यदि Decimal में बदला जाए तो इसका मान 1 होगा। यदि इस अंक के Bit-Pattern को एक अंक Left Shift किया जाए तो ये मान 0000000000000010 होगा, जो कि किसी Operand के दूसरे Bit को दर्शाएगा। इस कारण से हमने andMask = 1 << i; Statement प्रयोग किया है।
Loop के प्रथम Iteration में j का मान 15 होता है। इस वजह से ये Statement andMask = 1 << 15; हो जाता है। ये Statement अंक एक के Bit-Pattern का मान 15 Bit Left में Shift कर देता है, जिससे Bit-Pattern 100000000000000 हो जाता है। यदि इस संख्या को Decimal में Convert करें, तो इस Bit-Pattern का मान 32768 होता है, जो कि 15th Location का मान होता है। इस प्रकार से andMask का मान 32768 हो जाता है।
अब दूसरा Statement Execute होता है। k = n & andMask; Statement को यदि Expand करें, तो ये k = n & 32768; हो जाता है। अब Called Function से n का जो मान प्राप्त होता है उस मान के 15th Bit को Bitwise Operator & द्वारा Check किया जाता है कि 15th Bit की स्थिति क्या है \ k==0 ? printf(“0”) : printf(“1”); Statement द्वारा यदि इस 15th Location की Bit OFF होती है, तो Output में k का मान 0 Print हो जाता है अन्यथा k का मान 1 Print होता है।
दूसरे Iteration में for Loop के Variable का मान जब 14 हो जाता है, तब andMask = 1 << j; Statement द्वारा andMask का मान 16384 हो जाता है। k = n & andMask; Statement द्वारा Expand होता है और k = n & 16384; हो जाता है। अब Called Function से प्राप्त Variable n के मान की 14th Location की Bit Check होती है और Bit की स्थिति को Print कर दिया जाता है।
इस प्रकार से 13th , 12th 11th को Check करते हुए अंत में 0th Location पर के Bit को Check किया जाता है। यदि Bit On होता है तो 1 Print होता है और यदि Bit OFF होता है तो 0 print होता है। इस प्रकार से किसी भी Operand के Bit-Pattern को इस Function द्वारा Print किया जा सकता है।
किसी संख्या की Binary Value ज्ञात करने के लिए इस Function को हम निम्नानुसार Use कर सकते हैं:
इस binary() को Modify करके हम इसे किसी बडी संख्या की Binary ज्ञात करने के लिए भी Use कर सकते हैं। Modified Function निम्नानुसार बनाया जा सकता है: (Conversion of Decimal to Binary in C – Wiki )
ये Article इस वेबसाईट पर Selling हेतु उपलब्ध EBook C Programming Language in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी।
C Programming Language in Hindi | Page: 477 + 265 | Format: PDF