Print an integer in binary format in Java

Java

Java Problem Overview


I have a number and I want to print it in binary. I don't want to do it by writing an algorithm.

Is there any built-in function for that in Java?

Java Solutions


Solution 1 - Java

Assuming you mean "built-in":

int x = 100;
System.out.println(Integer.toBinaryString(x));

See Integer documentation.

(Long has a similar method, BigInteger has an instance method where you can specify the radix.)

Solution 2 - Java

Here no need to depend only on binary or any other format... one flexible built in function is available That prints whichever format you want in your program.. Integer.toString(int, representation)

Integer.toString(100,8) // prints 144 --octal representation

Integer.toString(100,2) // prints 1100100 --binary representation

Integer.toString(100,16) //prints 64 --Hex representation

Solution 3 - Java

System.out.println(Integer.toBinaryString(343));

Solution 4 - Java

I needed something to print things out nicely and separate the bits every n-bit. In other words display the leading zeros and show something like this:

n = 5463
output = 0000 0000 0000 0000 0001 0101 0101 0111

So here's what I wrote:

/**
 * Converts an integer to a 32-bit binary string
 * @param number
 * 		The number to convert
 * @param groupSize
 * 		The number of bits in a group
 * @return
 * 		The 32-bit long bit string
 */
public static String intToString(int number, int groupSize) {
	StringBuilder result = new StringBuilder();
	
	for(int i = 31; i >= 0 ; i--) {
		int mask = 1 << i;
		result.append((number & mask) != 0 ? "1" : "0");
		
		if (i % groupSize == 0)
			result.append(" ");
	}
	result.replace(result.length() - 1, result.length(), "");
	
	return result.toString();
}

Invoke it like this:

public static void main(String[] args) {
    System.out.println(intToString(5463, 4));
}

Solution 5 - Java

public static void main(String[] args) 
{
	int i = 13;
	short s = 13;
	byte b = 13;
	
	System.out.println("i: " + String.format("%32s", 
			Integer.toBinaryString(i)).replaceAll(" ", "0"));

	System.out.println("s: " + String.format("%16s", 
			Integer.toBinaryString(0xFFFF & s)).replaceAll(" ", "0"));

	System.out.println("b: " + String.format("%8s", 
			Integer.toBinaryString(0xFF & b)).replaceAll(" ", "0"));

}

Output:

i: 00000000000000000000000000001101
s: 0000000000001101
b: 00001101

Solution 6 - Java

Old school:

    int value = 28;
    for(int i = 1, j = 0; i < 256; i = i << 1, j++)
        System.out.println(j + " " + ((value & i) > 0 ? 1 : 0));

Output (least significant bit is on 0 position):

0 0
1 0
2 1
3 1
4 1
5 0
6 0
7 0

Solution 7 - Java

check out this logic can convert a number to any base

public static void toBase(int number, int base) {
    String binary = "";
    int temp = number/2+1;
    for (int j = 0; j < temp ; j++) {
        try {
            binary += "" + number % base;

            number /= base;
        } catch (Exception e) {
        }
    }
    for (int j = binary.length() - 1; j >= 0; j--) {
        System.out.print(binary.charAt(j));
    }
}

OR

StringBuilder binary = new StringBuilder();
int n=15;
while (n>0) {
    if((n&1)==1){
 		binary.append(1);
	}else
		binary.append(0);
    n>>=1;
}
System.out.println(binary.reverse());

Solution 8 - Java

This is the simplest way of printing the internal binary representation of an integer. For Example: If we take n as 17 then the output will be: 0000 0000 0000 0000 0000 0000 0001 0001

void bitPattern(int n) {
		
		int mask = 1 << 31;
        int count = 0;
		while(mask != 0) {
			if(count%4 == 0)
				System.out.print(" ");

			if((mask&n) == 0) 

				System.out.print("0");
				
			

			else 
				System.out.print("1");
				
	
			count++;
			mask = mask >>> 1;
		
	
	}
	System.out.println();
}

Solution 9 - Java

Simple and pretty easiest solution.

public static String intToBinaryString(int integer, int numberOfBits) {

	if (numberOfBits > 0) {		// To prevent FormatFlagsConversionMismatchException.
			
		String nBits = String.format("%" + numberOfBits + "s",		// Int to bits conversion
				Integer.toBinaryString(integer))
				.replaceAll(" ","0"); 
			
		return nBits;	// returning the Bits for the given int.
	}
	
	return null;		// if the numberOfBits is not greater than 0, returning null.
}

Solution 10 - Java

Simply try it. If the scope is only printing the binary values of the given integer value. It can be positive or negative.

      public static void printBinaryNumbers(int n) {
        char[] arr = Integer.toBinaryString(n).toCharArray();
        StringBuilder sb = new StringBuilder();
        for (Character c : arr) {
          sb.append(c);
        }
        System.out.println(sb);
      }

input

5

Output

101

Solution 11 - Java

Solution using 32 bit display mask,

public static String toBinaryString(int n){

    StringBuilder res=new StringBuilder();
    //res= Integer.toBinaryString(n); or
    int displayMask=1<<31;
    for (int i=1;i<=32;i++){
        res.append((n & displayMask)==0?'0':'1');
        n=n<<1;
        if (i%8==0) res.append(' ');
    }

    return res.toString();
}


 System.out.println(BitUtil.toBinaryString(30));


O/P:
00000000 00000000 00000000 00011110 

Solution 12 - Java

There are already good answers posted here for this question. But, this is the way I've tried myself (and might be the easiest logic based → modulo/divide/add):

        int decimalOrBinary = 345;
        StringBuilder builder = new StringBuilder();

        do {
            builder.append(decimalOrBinary % 2);
            decimalOrBinary = decimalOrBinary / 2;
        } while (decimalOrBinary > 0);

        System.out.println(builder.reverse().toString()); //prints 101011001

Solution 13 - Java

Binary representation of given int x with left padded zeros:

org.apache.commons.lang3.StringUtils.leftPad(Integer.toBinaryString(x), 32, '0')

Solution 14 - Java

You can use bit mask (1<< k) and do AND operation with number! 1 << k has one bit at k position!

private void printBits(int x) {
    for(int i = 31; i >= 0; i--) {
        if((x & (1 << i)) != 0){
            System.out.print(1);
        }else {
            System.out.print(0);
        }
    }
    System.out.println();
}

Solution 15 - Java

The question is tricky in java (and probably also in other language).

A Integer is a 32-bit signed data type, but Integer.toBinaryString() returns a string representation of the integer argument as an unsigned integer in base 2.

So, Integer.parseInt(Integer.toBinaryString(X),2) can generate an exception (signed vs. unsigned).

The safe way is to use Integer.toString(X,2); this will generate something less elegant:

-11110100110

But it works!!!

Solution 16 - Java

I think it's the simplest algorithm so far (for those who don't want to use built-in functions):

public static String convertNumber(int a)  { 
              StringBuilder sb=new StringBuilder();
              sb.append(a & 1);
              while ((a>>=1) != 0)  { 
                  sb.append(a & 1);
               }
              sb.append("b0");
              return sb.reverse().toString();
  }

Example:

convertNumber(1) --> "0b1"

convertNumber(5) --> "0b101"

convertNumber(117) --> "0b1110101"

How it works: while-loop moves a-number to the right (replacing the last bit with second-to-last, etc), gets the last bit's value and puts it in StringBuilder, repeats until there are no bits left (that's when a=0).

Solution 17 - Java

	for(int i = 1; i <= 256; i++)
	{
		System.out.print(i + " "); //show integer
		System.out.println(Integer.toBinaryString(i) + " "); //show binary
		System.out.print(Integer.toOctalString(i) + " "); //show octal
		System.out.print(Integer.toHexString(i) + " "); //show hex
		
	}

Solution 18 - Java

Try this way:

public class Bin {
  public static void main(String[] args) {
    System.out.println(toBinary(0x94, 8));
  }

  public static String toBinary(int a, int bits) {
    if (--bits > 0)
        return toBinary(a>>1, bits)+((a&0x1)==0?"0":"1");
    else 
        return (a&0x1)==0?"0":"1";
  }

}

10010100

Solution 19 - Java

Enter any decimal number as an input. After that we operations like modulo and division to convert the given input into binary number. Here is the source code of the Java Program to Convert Integer Values into Binary and the bits number of this binary for his decimal number. The Java program is successfully compiled and run on a Windows system. The program output is also shown below.

	public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
		int integer ;
		String binary = "";    //   here we count "" or null 
		                       //   just String binary = null;
        System.out.print("Enter the binary Number: ");
        integer = sc.nextInt();
        
        while(integer>0)
        {
        	int x = integer % 2;
        	binary = x + binary;
        	integer = integer / 2;	
        }
        System.out.println("Your binary number is : "+binary);
        System.out.println("your binary length : " + binary.length());
	}
}

Solution 20 - Java

Since no answer is accepted, maybe your question was about how to store an integer in an binary-file. java.io.DataOutputStream might be what you're looking for: <https://docs.oracle.com/javase/8/docs/api/java/io/DataOutputStream.html>

DataOutputStream os = new DataOutputStream(outputStream);
os.writeInt(42);
os.flush();
os.close();

Solution 21 - Java

Integer.toString(value,numbersystem) --- syntax to be used and pass value

Integer.toString(100,8) // prints 144 --octal

Integer.toString(100,2) // prints 1100100 --binary

Integer.toString(100,16) //prints 64 --Hex

Solution 22 - Java

This is my way to format an output of the Integer.toBinaryString method:

public String toBinaryString(int number, int groupSize) {
    String binary = Integer.toBinaryString(number);

    StringBuilder result = new StringBuilder(binary);
    for (int i = 1; i < binary.length(); i++) {
        if (i % groupSize == 0) {
            result.insert(binary.length() - i, " ");
        }
    }
    return result.toString();
}

The result for the toBinaryString(0xABFABF, 8) is "10101011 11111010 10111111"
and for the toBinaryString(0xABFABF, 4) is "1010 1011 1111 1010 1011 1111"

Solution 23 - Java

It works with signed and unsigned values used powerful bit manipulation and generates the first zeroes on the left.

public static String representDigits(int num) {

    	int checkBit = 1 << (Integer.SIZE * 8 - 2 );	// avoid the first digit    	
    	StringBuffer sb = new StringBuffer();
    	
    	if (num < 0 ) {		// checking the first digit
    		sb.append("1");
    	} else {
    		sb.append("0");
    	}
    	 
    	while(checkBit != 0) {			
    		if ((num & checkBit) == checkBit){
    			sb.append("1");
    		} else {
    			sb.append("0");
    		}			
    		checkBit >>= 1;		
    	}		
    	
    	return sb.toString();
    }

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionakshayxyzView Question on Stackoverflow
Solution 1 - JavaJon SkeetView Answer on Stackoverflow
Solution 2 - JavaMohasin AliView Answer on Stackoverflow
Solution 3 - JavaadarshrView Answer on Stackoverflow
Solution 4 - JavaMaghoumiView Answer on Stackoverflow
Solution 5 - JavaSeyit BilalView Answer on Stackoverflow
Solution 6 - JavaDavid WilliamsView Answer on Stackoverflow
Solution 7 - JavaZahid AliView Answer on Stackoverflow
Solution 8 - JavarpgView Answer on Stackoverflow
Solution 9 - JavaJack ReezView Answer on Stackoverflow
Solution 10 - JavaGanesa VijayakumarView Answer on Stackoverflow
Solution 11 - Javadhanu10896View Answer on Stackoverflow
Solution 12 - Javauser8491011View Answer on Stackoverflow
Solution 13 - JavaankitkpdView Answer on Stackoverflow
Solution 14 - JavaparveenView Answer on Stackoverflow
Solution 15 - JavaninjaView Answer on Stackoverflow
Solution 16 - JavaparsecerView Answer on Stackoverflow
Solution 17 - JavaplowboyView Answer on Stackoverflow
Solution 18 - Javapengguang001View Answer on Stackoverflow
Solution 19 - JavaMd. Tarikul IslamView Answer on Stackoverflow
Solution 20 - JavaChristian CharbulaView Answer on Stackoverflow
Solution 21 - JavaMohan SharmaView Answer on Stackoverflow
Solution 22 - JavaLu55View Answer on Stackoverflow
Solution 23 - JavaRóbert KovácsView Answer on Stackoverflow