Program for Decimal to Binary Conversion (original) (raw)

Last Updated : 21 Jun, 2025

Try it on GfG Practice redirect icon

Given a non negative number **n, the task is to convert the given number into an equivalent **binary representation.

**Examples:

**Input: n = 12
**Output: "1100"
**Explanation: the binary representation of 12 is "1100", since 12 = 1×23 + 1×22 + 0×21+ 0×20 = 12

**Input: n = 33
**Output: "100001"
**Explanation: the binary representation of 33 is "100001", since 1×25 + 0×24 + 0×23 + 0×22 + 0×21 + 1×20 = 33

Table of Content

[Approach - 1] Division by 2 - O(log₂(n)) Time and O(log₂(n)) Space

To convert a decimal number to binary, repeatedly divide it by 2 and record the remainders. Reading these remainders in reverse gives the binary representation.

C++ `

#include #include using namespace std;

string decToBinary(int n) {

string bin = "";
while (n > 0) {
    // checking the mod 
    int bit = n%2;
      bin.push_back('0' + bit);
    n /= 2;
}

// reverse the string 
reverse(bin.begin(), bin.end());
return bin;

}

int main() { int n = 12; cout << decToBinary(n); return 0; }

C

#include <stdio.h> #include <string.h>

// function to reverse the string void reverse(char *bin, int left, int right) { while (left < right) { char temp = bin[left]; bin[left] = bin[right]; bin[right] = temp; left++; right--; } }

// function to convert decimal to binary char* decToBinary(int n) { int index = 0; char* bin = (char*) malloc(32 * sizeof(char));

while (n > 0) {
    int bit = n % 2;
    bin[index++] = '0' + bit;
    n /= 2;
}
bin[index] = '\0';

// Reverse the binary string
reverse(bin, 0, index-1);
  return bin;

}

int main() { int n = 12; char* bin = decToBinary(n);

printf("%s", bin);
return 0;

}

Java

import java.util.*;

class GfG { static String decToBinary(int n) { StringBuilder bin = new StringBuilder();

    while (n > 0) {
        int bit = n % 2;
        bin.append((char) ('0' + bit));
        n /= 2;
    }
    
    // reverse the string
    bin.reverse();
    return bin.toString();
}

public static void main(String[] args) {
    int n = 12;
    System.out.println(decToBinary(n));
}

}

Python

function to convert decimal to binary

def decToBinary(n): binArr = []

while n > 0:
    bit = n % 2
    binArr.append(str(bit))
    n //= 2

# reverse the string
binArr.reverse()
return "".join(binArr)

if name == "main": n = 12 print(decToBinary(n))

C#

using System; using System.Collections.Generic;

class GfG {

// function to convert decimal to binary
static string decToBinary(int n) {
    List<char> bin = new List<char>();

    while (n > 0) {
        int bit = n % 2;
        bin.Add((char)('0' + bit));
        n /= 2;
    }

    // reverse the string
    bin.Reverse();
    return new string(bin.ToArray());
}

static void Main() {
    int n = 12;
    Console.WriteLine(decToBinary(n));
}

}

JavaScript

// Function to convert decimal to binary function decToBinary(n) { let bin = [];

while (n > 0) {
    let bit = n % 2;
    bin.push(String(bit));
    n = Math.floor(n / 2);
}

// reverse the string
bin.reverse();
return bin.join("");

}

// Driver Code let n = 12; console.log(decToBinary(n));

`

[Approach - 2] Using Head Recursion - O(log₂(n)) Time and O(log₂(n)) Space

The idea is same as the previous approach, but we will use recursion to generate the binary equivalent number.

C++ `

#include #include using namespace std;

// Recursive function to convert decimal to binary void decToBinaryRec(int n, string &bin) { // Base Case if (n==0) return;

  // Recur for smaller bits.
  decToBinaryRec(n/2, bin);

  // Add MSB of current number to the binary string
  bin.push_back(n%2 + '0');

}

// Function to convert decimal to binary string decToBinary(int n) { if (n == 0) return "0";

string bin = "";
  decToBinaryRec(n, bin);
  return bin;

}

int main() { int n = 12; cout << decToBinary(n); return 0; }

Java

class GfG {

// Recursive function to convert decimal to binary
static void decToBinaryRec(int n, StringBuilder bin) {
    // Base Case
    if (n == 0)
        return;

    // Recur for smaller bits.
    decToBinaryRec(n / 2, bin);

    // Add MSB of current number to the binary string
    bin.append(n % 2);
}

// Function to convert decimal to binary
static String decToBinary(int n) {
    if (n == 0)
        return "0";

    StringBuilder bin = new StringBuilder();
    decToBinaryRec(n, bin);
    return bin.toString();
}

public static void main(String[] args) {
    int n = 12;
    System.out.println(decToBinary(n));
}

}

Python

def decToBinaryRec(n, binArr): # Base Case if n == 0: return

# Recur for smaller bits.
decToBinaryRec(n // 2, binArr)

# Add MSB of current number to the binary list
binArr.append(str(n % 2))

Function to convert decimal to binary

def decToBinary(n): if n == 0: return "0"

binArr = []
decToBinaryRec(n, binArr)
return "".join(binArr)

if name == "main": n = 12 print(decToBinary(n))

C#

using System; using System.Text;

class GfG {

// Recursive function to convert decimal to binary
static void decToBinaryRec(int n, StringBuilder bin) {
    // Base Case
    if (n == 0) 
        return;

    // Recur for smaller bits.
    decToBinaryRec(n / 2, bin);

    // Add MSB of current number to the binary string
    bin.Append(n % 2);
}

// Function to convert decimal to binary
static string decToBinary(int n) {
    if (n == 0) 
        return "0";

    StringBuilder bin = new StringBuilder();
    decToBinaryRec(n, bin);
    return bin.ToString();
}

static void Main() {
    int n = 12;
    Console.WriteLine(decToBinary(n));
}

}

JavaScript

function decToBinaryRec(n, bin) { // Base Case if (n === 0) return;

// Recur for smaller bits.
decToBinaryRec(Math.floor(n / 2), bin);

// Add MSB of current number to the binary string
bin.push(n % 2);

}

// Function to convert decimal to binary function decToBinary(n) { if (n === 0) return "0";

let bin = [];
decToBinaryRec(n, bin);
return bin.join("");

}

// Driver code let n = 12; console.log(decToBinary(n));

`

[Approach - 3] Using Bitwise Operators - O(log₂(n))Time *and O(log₂(n))* Space

Using bitwise operators, we can extract binary digits by checking the least significant bit (n & 1) and then right-shifting the number (n >> 1) to process the next bit.
This method is faster than arithmetic division and modulo, as bitwise operations are more efficient at the hardware level.

C++ `

#include #include using namespace std;

string decToBinary(int n) {

  // String to store the binary representation
string bin = ""; 

while (n > 0) {
  
    // Finding (n % 2) using bitwise AND operator
    // (n & 1) gives the least significant bit (LSB)
    
    int bit = n & 1;
    bin.push_back('0' + bit);
      
    // Right shift n by 1 (equivalent to n = n / 2)
    // This removes the least significant bit (LSB)
    n = n >> 1;
}
  
reverse(bin.begin(), bin.end());
return bin;

}

int main() { int n = 12; cout << decToBinary(n); return 0; }

C

#include <stdio.h> #include <string.h>

// Function to Reverse the string void reverse(char *bin, int left, int right) {

while (left < right) {
    char temp = bin[left];
    bin[left] = bin[right];
    bin[right] = temp;
    left++;
    right--;
}

}

// function to convert decimal to binary char* decToBinary(int n) { int index = 0; char* bin = (char*) malloc(32 * sizeof(char));

while (n > 0) {
  
      // Finding (n % 2) using bitwise AND operator
    // (n & 1) gives the least significant bit (LSB)
    int bit = n & 1;
    bin[index++] = '0' + bit;
  
      // Right shift n by 1 (equivalent to n = n / 2)
    // This removes the least significant bit (LSB)
    n = n >> 1;
}
bin[index] = '\0';

// Reverse the binary string
reverse(bin, 0, index-1);
  return bin;

}

int main() { int n = 12; char* bin = decToBinary(n);

printf("%s", bin);
return 0;

}

Java

import java.util.*;

class GfG {

static String decToBinary(int n) {
    // String to store the binary representation
    StringBuilder bin = new StringBuilder();

    while (n > 0) {

        // Finding (n % 2) using bitwise AND operator
        // (n & 1) gives the least significant bit (LSB)
        
        int bit = n & 1;
        bin.append(bit);

        // Right shift n by 1 (equivalent to n = n / 2)
        // This removes the least significant bit (LSB)
        
        n = n >> 1;
    }

    return bin.reverse().toString();
}

public static void main(String[] args) {
    int n = 12;
    System.out.println(decToBinary(n));
}

}

Python

def decToBinary(n):

# String to store the binary representation
bin = ""

while n > 0:
    # Finding (n % 2) using bitwise AND operator
    # (n & 1) gives the least significant bit (LSB)
    bit = n & 1
    bin += str(bit)

    # Right shift n by 1 (equivalent to n = n // 2)
    # This removes the least significant bit (LSB)
    n = n >> 1

return bin[::-1]

if name == "main": n = 12 print(decToBinary(n))

C#

using System; using System.Text;

class GfG {

// Function to convert decimal to binary
static string decToBinary(int n) {
  
    // String to store the binary representation
    StringBuilder bin = new StringBuilder();

    while (n > 0) {

        // Finding (n % 2) using bitwise AND operator
        // (n & 1) gives the least significant bit (LSB)
        int bit = n & 1;
        bin.Append(bit);

        // Right shift n by 1 (equivalent to n = n / 2)
        // This removes the least significant bit (LSB)
        n = n >> 1;
    }

    char[] arr = bin.ToString().ToCharArray();
    Array.Reverse(arr);
    return new string(arr);
}

static void Main() {
    int n = 12;
    Console.WriteLine(decToBinary(n));
}

}

JavaScript

function decToBinary(n) {

// String to store the binary representation
let bin = "";

while (n > 0) {

    // Finding (n % 2) using bitwise AND operator
    // (n & 1) gives the least significant bit (LSB)
    let bit = n & 1;
    bin += bit;

    // Right shift n by 1 (equivalent to n = Math.floor(n / 2))
    // This removes the least significant bit (LSB)
    n = n >> 1;
}

return bin.split("").reverse().join("");

}

// Driver code let n = 12; console.log(decToBinary(n));

`

[Approach - 4] Using Built-in Methods - O(log₂(n))Time and O(log₂(n))Space

The main idea is to leverage built-in functions provided by programming languages to directly convert a decimal number to its binary form. These functions abstract away the underlying logic and return the binary representation as a string, making the process quick, concise, and error-free.

C++ `

#include #include
#include
#include
using namespace std;

string decToBinary(int n) {

int len = (int)(log2(n));

// Store in bitset to get the binary representation, 
  // then convert it to string
  // and finally remove the prefix zeroes
  
return bitset<64>(n).to_string().substr(64 - len - 1);

}

int main() { int n = 12; cout << decToBinary(n); return 0; }

Java

class GfG {

static String decToBinary(int n) {
    int len = (int)(Math.log(n) / Math.log(2));
    // Convert to binary string and remove leading zeros
    return String.format("%s", Integer.toBinaryString(n));
}

public static void main(String[] args) {
    int n = 12;
    System.out.println(decToBinary(n));
}

}

Python

import math

def decToBinary(n): return bin(n)[2::]

if name == "main": n = 12 print(decToBinary(n))

C#

using System;

class GfG {

static string decToBinary(int n) {
    // Convert the integer 'n' to its binary representation using base 2
    // Convert.ToString(n, 2) converts the number to a string in binary
    return Convert.ToString(n, 2);
}

static void Main() {
    int n = 12;
    Console.WriteLine(decToBinary(n));
}

}

JavaScript

function decToBinary(n) { // Use toString(2) to convert the // number to a binary string return n.toString(2); }

// Driver Code let n = 12; console.log(decToBinary(n));

`