📘 Lesson  ·  Lesson 66

Decimal to Binary

Conversion के पीछे का विचार

हमारी रोज़मर्रा की संख्याएँ base 10 (decimal) में होती हैं, अंक 0-9 इस्तेमाल करती हैं। Computer base 2 (binary) इस्तेमाल करते हैं, सिर्फ़ 0 और 1। Decimal number को binary में बदलना यानी उसे केवल इन्हीं दो अंकों से दोबारा लिखना।

तरकीब सरल है: number को बार-बार 2 से भाग दें और हर बार remainder नोट करें। हर remainder एक binary अंक (bit) है। जब number 0 हो जाए, तो आपके पास सारे bits हैं — बस उन्हें उल्टा पढ़ें। एक dry run से देखते हैं क्यों।

कदम-दर-कदम dry run

चलिए 13 को हाथ से binary में बदलें, हर कदम 2 से भाग देते हुए:

कदमNumber÷ 2 भागफलRemainder (bit)
11361
2630
3311
4101

जिस क्रम में remainders मिले वे हैं 1, 0, 1, 1। इन्हें नीचे से ऊपर (उल्टा) पढ़ने पर मिलता है 1101 — यही 13 का binary है।

तरीका 1: 2 से भाग (array)

सबसे आम program हर remainder को array में रखता है, फिर array को उल्टा print करता है।

C Language
#include <stdio.h>
int main() {
    int n = 13, binary[32], i = 0;

    if (n == 0) { printf("0"); return 0; }  // zero संभालें

    while (n > 0) {
        binary[i] = n % 2;   // remainder सहेजें
        n = n / 2;           // अगले पर जाएँ
        i++;
    }
    // उल्टा print करें
    for (int j = i - 1; j >= 0; j--)
        printf("%d", binary[j]);
    return 0;
}
Output:
1101

Loop array को 1, 0, 1, 1 से भरता है; उल्टा-print उसे 1101 बना देता है।

तरीका 2: recursion से

Recursion array को पूरी तरह हटा देता है। print करने से पहले खुद को call करके, bits स्वाभाविक रूप से सही क्रम में आते हैं।

C Language
#include <stdio.h>
void toBinary(int n) {
    if (n == 0) return;
    toBinary(n / 2);      // पहले गहरे जाएँ
    printf("%d", n % 2);  // लौटते समय print करें
}
int main() {
    int n = 13;
    if (n == 0) printf("0");
    else toBinary(n);
    return 0;
}
Output:
1101
💡 यह क्यों चलता है

क्योंकि function print करने से पहले खुद को call करता है, सबसे गहरी call (most significant bit) पहले print होती है। उल्टाव अपने आप हो जाता है।

तरीका 3: bitwise operators से

आप हर bit को सीधे right-shift >> और AND & operators से भी देख सकते हैं।

C Language
#include <stdio.h>
int main() {
    int n = 13;
    int started = 0;
    for (int i = 31; i >= 0; i--) {
        int bit = (n >> i) & 1;   // i-वाँ bit पढ़ें
        if (bit) started = 1;
        if (started) printf("%d", bit);
    }
    return 0;
}
Output:
1101

यह सबसे ऊँचे bit से नीचे चलता है, पहले 1 आने तक leading zeros छोड़ते हुए। यह सबसे करीब है कि computer असल में number कैसे रखता है।

त्वरित संदर्भ: decimal से binary

DecimalBinary
210
5101
81000
101010
131101
1610000

आम गलतियाँ

  • Remainders को उल्टा करने के बजाय इकट्ठा किए क्रम में print करना।
  • 0 की विशेष स्थिति भूल जाना, जो वरना कुछ print नहीं करती।
  • बड़ी संख्याओं के लिए बहुत छोटा array इस्तेमाल करना (int के लिए 32 bits सुरक्षित size है)।
  • n % 2 (bit) और n / 2 (अगला number) में उलझना।
🏋️ अभ्यास

तरीका 1 को बदलकर number user से scanf से पढ़ें, और इसे 0, 1, 25 और 255 से test करें। पुष्टि करें कि 255 11111111 देता है।

सारांश

  • Decimal को binary में बदलें — बार-बार 2 से भाग देकर remainders इकट्ठा करके।
  • सही binary number पाने के लिए remainders उल्टे क्रम में पढ़ने होते हैं।
  • तरीका 1 array इस्तेमाल करता है; तरीका 2 recursion; तरीका 3 bitwise operators।
  • 0 को हमेशा विशेष स्थिति की तरह संभालें।
  • उदाहरण: 13 बनता है 1101

अक्सर पूछे जाने वाले प्रश्न (FAQ)

C में decimal number को binary में कैसे बदलते हैं?
मानक तरीका यह है कि number को बार-बार 2 से भाग दें, हर remainder (0 या 1) सहेजें, और जब number 0 हो जाए तब रुक जाएँ। Binary result वे remainders हैं जो उल्टे क्रम में पढ़े जाते हैं — आख़िरी remainder से पहले तक।
हम remainders उल्टे क्रम में क्यों पढ़ते हैं?
क्योंकि जो पहला remainder मिलता है वह असल में least significant bit (सबसे दायाँ अंक) होता है, जबकि binary number सबसे बाईं ओर most significant bit के साथ लिखा जाता है। इकट्ठा किए remainders उल्टा करने से bits अपनी सही बाएँ-से-दाएँ जगह पर आ जाते हैं।
13 का binary क्या है?
13 का binary 1101 है। इसे place values जोड़कर जाँच सकते हैं: 8 + 4 + 0 + 1 = 13, जो 8, 4, 2, 1 स्थानों के लिए bits 1-1-0-1 से मेल खाता है।
क्या C में बिना array के decimal को binary में बदल सकते हैं?
हाँ। एक साफ़ तरीका recursion है: function पहले खुद को n / 2 के साथ call करता है, फिर लौटते समय n % 2 print करता है, जिससे bits बिना array में रखे स्वाभाविक रूप से सही क्रम में बनते हैं।
Binary में बदलते समय 0 को कैसे संभालें?
सामान्य 2-से-भाग वाला loop 0 को छोड़ देता है क्योंकि condition n > 0 शुरू से ही false होती है, इसलिए कुछ print नहीं होता। इसे विशेष स्थिति की तरह संभालें — input 0 होने पर सीधे 0 print करें।
← Back to C Tutorial
🔗

Share this topic with a friend

यह topic किसी दोस्त को भेजें

Found it useful? Send it to a classmate learning the same thing.

अच्छा लगा? जो दोस्त यही सीख रहा है, उसे भेज दीजिए।

💻 लाइव कोड एडिटर

इस पेज के प्रोग्राम यहीं तैयार हैं — चलाएँ, बदलें और सीखें। कुछ भी इंस्टॉल किए बिना।
OneCompiler द्वारा संचालित। कोड एडिटर में अपने आप आ जाता है — Run दबाकर आउटपुट देखें। अगर एडिटर न खुले तो नए टैब में खोलें.