Skip to content
geeksforgeeks
  • Tutorials
    • Python
    • Java
    • Data Structures & Algorithms
    • ML & Data Science
    • Interview Corner
    • Programming Languages
    • Web Development
    • CS Subjects
    • DevOps And Linux
    • School Learning
    • Practice Coding Problems
  • Courses
    • DSA to Development
    • Get IBM Certification
    • Newly Launched!
      • Master Django Framework
      • Become AWS Certified
    • For Working Professionals
      • Interview 101: DSA & System Design
      • Data Science Training Program
      • JAVA Backend Development (Live)
      • DevOps Engineering (LIVE)
      • Data Structures & Algorithms in Python
    • For Students
      • Placement Preparation Course
      • Data Science (Live)
      • Data Structure & Algorithm-Self Paced (C++/JAVA)
      • Master Competitive Programming (Live)
      • Full Stack Development with React & Node JS (Live)
    • Full Stack Development
    • Data Science Program
    • All Courses
  • DSA
  • Practice Mathematical Algorithm
  • Mathematical Algorithms
  • Pythagorean Triplet
  • Fibonacci Number
  • Euclidean Algorithm
  • LCM of Array
  • GCD of Array
  • Binomial Coefficient
  • Catalan Numbers
  • Sieve of Eratosthenes
  • Euler Totient Function
  • Modular Exponentiation
  • Modular Multiplicative Inverse
  • Stein's Algorithm
  • Juggler Sequence
  • Chinese Remainder Theorem
  • Quiz on Fibonacci Numbers
Open In App

Program for Decimal to Binary Conversion

Last Updated : 21 Jun, 2025
Comments
Improve
Suggest changes
Like Article
Like
Report
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
  • [Approach - 2] Using Head Recursion - O(log₂(n)) Time and O(log₂(n)) Space
  • [Approach - 3] Using Bitwise Operators - O(log₂(n)) Time and O(log₂(n)) Space
  • [Approach - 4] Using Built-in Methods - O(log₂(n)) Time and O(log₂(n)) Space

[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 <iostream> #include <algorithm> 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)); 

Output
1100

[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 <iostream> #include <algorithm> 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)); 

Output
1100

[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 <iostream> #include <algorithm> 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)); 

Output
1100

[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 <iostream>  #include <cmath>     #include <bitset>      #include <string>      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));  

Output
1100

H

Harsh Agarwal
Improve
Article Tags :
  • Misc
  • Mathematical
  • Computer Organization & Architecture
  • GATE CS
  • Digital Logic
  • DSA
  • MAQ Software
  • binary-representation
  • base-conversion
Practice Tags :
  • MAQ Software
  • Mathematical
  • Misc

Similar Reads

    Counters in Digital Logic
    A Counter is a device which stores (and sometimes displays) the number of times a particular event or process has occurred, often in relationship to a clock signal. Counters are used in digital electronics for counting purpose, they can count specific event happening in the circuit. For example, in
    4 min read
    Ring Counter in Digital Logic
    A ring counter is a typical application of the Shift register. The ring counter is almost the same as the shift counter. The only change is that the output of the last flip-flop is connected to the input of the first flip-flop in the case of the ring counter but in the case of the shift register it
    7 min read
    n-bit Johnson Counter in Digital Logic
    Prerequisite - Counters Johnson counter also known as creeping counter, is an example of synchronous counter. In Johnson counter, the complemented output of last flip flop is connected to input of first flip flop and to implement n-bit Johnson counter we require n flip-flop. It is one of the most im
    5 min read
    Ripple Counter in Digital Logic
    Counters play a crucial role in digital logic circuits, enabling tasks such as clock frequency division and sequencing. This article explores the concept of ripple counters, a type of asynchronous counter, their operation, advantages, and disadvantages in digital logic design. What is a Counter?Coun
    5 min read
    Design counter for given sequence
    A Counter is a device which stores (and sometimes displays) the number of times a particular event or process has occurred, often in relationship to a clock signal. Counters are used in digital electronics for counting purpose, they can count specific event happening in the circuit. For example, in
    3 min read
    Master-Slave JK Flip Flop
    Prerequisite -Flip-flop types and their ConversionRace Around Condition In JK Flip-flop - For J-K flip-flop, if J=K=1, and if clk=1 for a long period of time, then Q output will toggle as long as CLK is high, which makes the output of the flip-flop unstable or uncertain. This problem is called race
    4 min read
    Asynchronous Sequential Circuits
    An asynchronous sequential circuit does not have the clock signal; the transitions between different states occur due to the ‘change of inputs’. This makes them suitable for applications which involve low power input or when a clock signal may not be needed. In this article, we explain how these cir
    6 min read
    Shift Registers in Digital Logic
    Pre-Requisite: Flip-FlopsFlip flops can be used to store a single bit of binary data (1 or 0). However, in order to store multiple bits of data, we need multiple flip-flops. N flip flops are to be connected in order to store n bits of data. A Register is a device that is used to store such informati
    8 min read
    Design 101 sequence detector (Mealy machine)
    A sequence detector is a sequential state machine that takes an input string of bits and generates an output 1 whenever the target sequence has been detected. In a Mealy machine, output depends on the present state and the external input (x). Hence, in the diagram, the output is written outside the
    5 min read
    Amortized analysis for increment in counter
    Amortized analysis refers to determining the time-averaged running time for a sequence (not an individual) operation. It is different from average case analysis because here, we don't assume that the data arranged in average (not very bad) fashion like we do for average case analysis for quick sort.
    4 min read
geeksforgeeks-footer-logo
Corporate & Communications Address:
A-143, 7th Floor, Sovereign Corporate Tower, Sector- 136, Noida, Uttar Pradesh (201305)
Registered Address:
K 061, Tower K, Gulshan Vivante Apartment, Sector 137, Noida, Gautam Buddh Nagar, Uttar Pradesh, 201305
GFG App on Play Store GFG App on App Store
Advertise with us
  • Company
  • About Us
  • Legal
  • Privacy Policy
  • In Media
  • Contact Us
  • Advertise with us
  • GFG Corporate Solution
  • Placement Training Program
  • Languages
  • Python
  • Java
  • C++
  • PHP
  • GoLang
  • SQL
  • R Language
  • Android Tutorial
  • Tutorials Archive
  • DSA
  • Data Structures
  • Algorithms
  • DSA for Beginners
  • Basic DSA Problems
  • DSA Roadmap
  • Top 100 DSA Interview Problems
  • DSA Roadmap by Sandeep Jain
  • All Cheat Sheets
  • Data Science & ML
  • Data Science With Python
  • Data Science For Beginner
  • Machine Learning
  • ML Maths
  • Data Visualisation
  • Pandas
  • NumPy
  • NLP
  • Deep Learning
  • Web Technologies
  • HTML
  • CSS
  • JavaScript
  • TypeScript
  • ReactJS
  • NextJS
  • Bootstrap
  • Web Design
  • Python Tutorial
  • Python Programming Examples
  • Python Projects
  • Python Tkinter
  • Python Web Scraping
  • OpenCV Tutorial
  • Python Interview Question
  • Django
  • Computer Science
  • Operating Systems
  • Computer Network
  • Database Management System
  • Software Engineering
  • Digital Logic Design
  • Engineering Maths
  • Software Development
  • Software Testing
  • DevOps
  • Git
  • Linux
  • AWS
  • Docker
  • Kubernetes
  • Azure
  • GCP
  • DevOps Roadmap
  • System Design
  • High Level Design
  • Low Level Design
  • UML Diagrams
  • Interview Guide
  • Design Patterns
  • OOAD
  • System Design Bootcamp
  • Interview Questions
  • Inteview Preparation
  • Competitive Programming
  • Top DS or Algo for CP
  • Company-Wise Recruitment Process
  • Company-Wise Preparation
  • Aptitude Preparation
  • Puzzles
  • School Subjects
  • Mathematics
  • Physics
  • Chemistry
  • Biology
  • Social Science
  • English Grammar
  • Commerce
  • World GK
  • GeeksforGeeks Videos
  • DSA
  • Python
  • Java
  • C++
  • Web Development
  • Data Science
  • CS Subjects
@GeeksforGeeks, Sanchhaya Education Private Limited, All rights reserved
We use cookies to ensure you have the best browsing experience on our website. By using our site, you acknowledge that you have read and understood our Cookie Policy & Privacy Policy
Lightbox
Improvement
Suggest Changes
Help us improve. Share your suggestions to enhance the article. Contribute your expertise and make a difference in the GeeksforGeeks portal.
geeksforgeeks-suggest-icon
Create Improvement
Enhance the article with your expertise. Contribute to the GeeksforGeeks community and help create better learning resources for all.
geeksforgeeks-improvement-icon
Suggest Changes
min 4 words, max Words Limit:1000

Thank You!

Your suggestions are valuable to us.

What kind of Experience do you want to share?

Interview Experiences
Admission Experiences
Career Journeys
Work Experiences
Campus Experiences
Competitive Exam Experiences