w3resource

Java: Convert a binary number to hexadecimal number

Java Basic: Exercise-23 with Solution

Write a Java program to convert a binary number to a hexadecimal number.

Binary number: A binary number is a number expressed in the base-2 numeral system or binary numeral system. This system uses only two symbols: typically 0(zero) and 1(one).

Hexadecimal number: This is a positional numeral system with a radix, or base, of 16. Hexadecimal uses sixteen distinct symbols, most often the symbols 0-9 to represent values zero to nine, and A, B, C, D, E, F (or alternatively a, b, c, d, e, f) to represent values ten to fifteen.

Test Data:
Input a binary number: 1101

Pictorial Presentation: Binary to Hexadecimal number

Java: Convert a binary number to hexadecimal number

Sample Solution:

Java Code:

 import java.util.Scanner;

public class Exercise23 {
    public static void main(String[] args) {
        // Declare an array to store hexadecimal digits, variables for calculation, and binary input
        int[] hex = new int[1000];
        int i = 1, j = 0, rem, dec = 0, bin;

        // Create a Scanner object to read input from the user
        Scanner in = new Scanner(System.in);

        // Prompt the user to input a binary number
        System.out.print("Input a Binary Number: ");
        bin = in.nextInt();

        // Convert the binary number to decimal
        while (bin > 0) {
            rem = bin % 2;
            dec = dec + rem * i;
            i = i * 2;
            bin = bin / 10;
        }
        i = 0;

        // Convert the decimal number to hexadecimal
        while (dec != 0) {
            hex[i] = dec % 16;
            dec = dec / 16;
            i++;
        }

        // Display the hexadecimal value
        System.out.print("Hexadecimal value: ");
        for (j = i - 1; j >= 0; j--) {
            if (hex[j] > 9) {
                System.out.print((char)(hex[j] + 55));
            } else {
                System.out.print(hex[j]);
            }
        }
        System.out.print("\n");
    }
}

Explanation:

In the exercise above -

  • Initializes an array 'hex' to store the hexadecimal digits of the converted number, as well as other necessary variables.
  • It takes a binary number as input from the user using the "Scanner" class and stores it in the variable 'bin'.
  • It enters a loop to convert the binary number to decimal:
    • In each iteration, it calculates the remainder when the 'bin' is divided by 2 (which gives the least significant binary digit).
    • It adds this remainder multiplied by 'i' to the 'dec' variable to accumulate the decimal value.
    • It multiplies 'i' by 2 to prepare for the next binary digit.
    • It updates 'bin' by removing the least significant digit (rightmost) by dividing it by 10.
    • The loop continues until 'bin' becomes zero, effectively converting the entire binary number to decimal.
  • After converting to decimal, it enters another loop to convert the decimal number to hexadecimal:
    • In each iteration, it calculates the remainder when 'dec' is divided by 16 (which gives the least significant hexadecimal digit).
    • It stores this remainder in a 'hex' array.
    • It updates 'dec' by dividing it by 16 to move to the next hexadecimal digit.
  • Finally, it prints the hexadecimal representation of the original binary number by iterating through the 'hex' array in reverse order. It also handles hexadecimal digits greater than 9 by converting them to the corresponding letters A-F.

Sample Output:

Input a Binary Number: 1101                                                                                   
HexaDecimal value: D

Flowchart:

Flowchart: Java exercises: Convert a binary number to hexadecimal number

Java Code Editor:

Previous: Write a Java program to convert a binary number to decimal number.
Next: Write a Java program to convert a binary number to a Octal number.

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.



Follow us on Facebook and Twitter for latest update.