**Overview**

A binary number is a number which is composed of digits 1 and 0 such as 110011. A decimal number is a number which is composed of digits 0 to 9 such as 130672.

It is a common requirement in computer programming to convert a decimal number to binary format and vice-versa.

In this post, we will focus on different ways a decimal number can be converted to its equivalent binary number in java.

**Logic**

To convert a decimal number into binary, a series of steps are performed. In every step, the number is divided by 2 (since the base of binary number is 2) and the remainder is stored.

Also, in each step the number is replaced by the quotient of previous step. These steps are performed till the quotient(or the number to be divided in next step) becomes 0.

The number formed by *merging all the remainders* is the resultant **Binary Number**.

**For Example,** suppose the number to be converted to binary is 24. It is divided by 2 in a sequence of steps as :

Division | Quotient | Remainder |
---|---|---|

25 / 2 | 12 | 1 |

12 / 2 | 6 | 0 |

6 / 2 | 3 | 0 |

3 / 2 | 1 | 1 |

1 / 2 | 0 | 1 |

Now, merging the remainders of all steps starting from last step to step 1(or in reverse order of division), the binary number is 11001.

This post will focus on elaborating different methods of converting a decimal number to binary using java.

Also Refer : **How to convert decimal number to binary**

**Method 1 : Using Array **Code to convert a decimal number to binary is given below. This code loops over the number till it remains greater than zero.

In every iteration, the number is divided by 2 and its remainder is held in an integer array.

After the loop completes, this array is iterated to print the digits.

static void usingArray() { //initialize array int binary[] = new int[20]; // declare the decimal number to be converted to binary int decimalNumber = 25; int index = 0; // loop till the number is greater than 0 while (decimalNumber > 0) { // divide the number by 2 using modulus operator so that we get the remainder int remainder = decimalNumber % 2; // store the remainder in array binary[index++] = remainder; // divide the number to get the quotient and assign it back to the number decimalNumber = decimalNumber / 2; } // loop over the array backwards and print the binary number for (int i = index - 1; i >= 0; i--) { System.out.print(binary[i]); } } |

**Method 2 : Using StringBuffer **This method is similar to the above method but instead of using an array to hold the remainder values, we use a

`java.lang.StringBuffer`

.After the loop, the StringBuffer is reversed since the remainder digits have been added from the start and binary number is counted from the end.

The reversed StringBuffer is then converted to a String.

static void usingStringBuffer() { // declare the decimal number to be converted to binary int decimalNumber = 25; // initialize stringbuffer which will hold the binary number StringBuffer binaryBuffer = new StringBuffer(); // loop till the number is greater than 0 while (decimalNumber > 0) { // divide the number by 2 using modulus operator so that we get the remainder int remainder = decimalNumber % 2; // add the remainder to string buffer binaryBuffer.append(remainder); // divide the number to get the quotient and assign it back to the number decimalNumber = decimalNumber / 2; } //reverse the buffer and convert it to string String binaryNumber = binaryBuffer.reverse().toString(); System.out.println(binaryNumber); } |

**Method 3 : Using Integer wrapper class method **

`java.lang.Integer`

class has a method `toBinaryString()`

which takes an integer and converts it to its binary equivalent in String format.static void usingWrapperClass() { // declare the decimal number to be converted to binary int decimalNumber = 25; //convert the decimal number to binary using Integer class method String binaryNumber = Integer.toBinaryString(decimalNumber); System.out.println(binaryNumber); } |

**Method 4 : Using toString() method of Integer wrapper class **

`java.lang.Integer`

class has a `toBinaryString()`

method which takes an integer and the base (or radix) of the number system in which the integer needs to be converted.Since the base of binary number system is 2, we pass it to the

`toString()`

method and get the binary representation of the supplied decimal number.static void usingToStringMethod() { // declare the decimal number to be converted to binary int decimalNumber = 25; //convert the number to string using desired base String binaryNumber = Integer.toString(decimalNumber, 2); System.out.println(binaryNumber); } |

**Method 5 : Using Recursion **This method is similar to Method 1 except that instead of looping over the number, we call the method recursively passing the number divided by 2 as argument.

The method is called till the number reduces to either 0 or 1. At this point, the number has been converted to its binary equivalent and hence the recursion ends.

static void usingRecursion() { // declare the decimal number to be converted to binary int decimalNumber = 25; // call the method which converts the number to binary printBinaryform(decimalNumber); } static void printBinaryform(int number) { int remainder; // check if the number is 0 or 1, then it has been converted to binary if (number <= 1) { System.out.print(number); return; } // divide the number by 2 using modulus operator so that we get the remainder remainder = number % 2; //call method again with the quotient as the number printBinaryform(number / 2); System.out.print(remainder); } |

**Method 6 : Using Stack **This method is also similar to Method 1. It uses a

`java.util.Stack`

to hold the remainders of division. A Stack is a **LIFO**data structure.

Elements added first are retrieved last from it. Hence the remainders added to it are retrieved in reverse order.

For retrieving elements from the stack, we iterate over it till it becomes empty.

Elements are added to a Stack using

`push()`

method and retrieved using `pop()`

method.static void usingStack() { // initialize stack Stack stack = new Stack(); // declare the decimal number to be converted to binary int decimalNumber = 25; // loop till the number is greater than 0 while (decimalNumber > 0) { // divide the number by 2 using modulus operator so that we get the // remainder int remainder = decimalNumber % 2; // push the remainder at the top of stack stack.push(remainder); // divide the number to get the quotient and assign it back to the number decimalNumber = decimalNumber / 2; } // loop over stack till it becomes empty while (!stack.isEmpty()) { // remove topmost elements from the stack System.out.print(stack.pop()); } } |

**Let’s tweak in :**

- Every number belongs to a number system. Each number system has its own base or radix.

Thus**every number has a base**which tells us about the number system of this number.

Following are the common number systems and their base (or radix)**:**Binary Number System **2**Octal Number System **8**Decimal Number System **10**Hexadecimal Number System **16** - The result of
`toBinaryString()`

method of`java.lang.Integer`

class will be different for positive and negative numbers.

That is,`toBinaryString(25)`

and`toBinaryString(-25)`

will give different values. - Use
`java.lang.StringBuffer`

in place of`java.lang.String`

when there are multiple String manipulations involved.

This is because each String manipulation creates a new object while in case of StringBuffer, same object is manipulated. `java.lang.Integer`

class has`toOctalString()`

and`toHexString()`

methods to convert a decimal to Octal and Hexadecimal equivalents respectively.

There can be many other approaches to convert a decimal to binary. If you can think of, let’s add it to the list.

0