¿Convertir un int en una representación de cadena binaria en Java?

168

¿Cuál sería la mejor manera (idealmente, la más simple) para convertir una int en una representación de cadena binaria en Java?

Por ejemplo, supongamos que int es 156. La representación de cadena binaria de esto sería "10011100".

Tyler Treat
fuente

Respuestas:

330
Integer.toBinaryString(int i)
Jack
fuente
Eso es conveniente! ¿Existe un método similar para largos?
Tyler Treat
46
@ ttreat31: No quiero decir que esto suene sarcástico, pero realmente debería tener la documentación (en este caso JavaDoc) a mano cuando esté programando. No debería tener que preguntar: es un método similar para largos; debe tomar para que lo busques antes de escribir el comentario.
Lawrence Dol
55
@Jack, ¿hay alguna manera de obtener la cadena binaria en un número fijo de bits como, decimal 8 en binario de 8 bits que 00001000
Kasun Siyambalapitiya
26
public static string intToBinary(int n)
{
    string s = "";
    while (n > 0)
    {
        s =  ( (n % 2 ) == 0 ? "0" : "1") +s;
        n = n / 2;
    }
    return s;
}
Ariel Badilla
fuente
20

Una forma más: al usar java.lang.Integer puede obtener una representación de cadena del primer argumento ien el radix (Octal - 8, Hex - 16, Binary - 2)especificado por el segundo argumento.

 Integer.toString(i, radix)

Ejemplo_

private void getStrtingRadix() {
        // TODO Auto-generated method stub
         /* returns the string representation of the 
          unsigned integer in concern radix*/
         System.out.println("Binary eqivalent of 100 = " + Integer.toString(100, 2));
         System.out.println("Octal eqivalent of 100 = " + Integer.toString(100, 8));
         System.out.println("Decimal eqivalent of 100 = " + Integer.toString(100, 10));
         System.out.println("Hexadecimal eqivalent of 100 = " + Integer.toString(100, 16));
    }

Salida_

Binary eqivalent of 100 = 1100100
Octal eqivalent of 100 = 144
Decimal eqivalent of 100 = 100
Hexadecimal eqivalent of 100 = 64
Rupesh Yadav
fuente
5
public class Main  {

   public static String toBinary(int n, int l ) throws Exception {
       double pow =  Math.pow(2, l);
       StringBuilder binary = new StringBuilder();
        if ( pow < n ) {
            throw new Exception("The length must be big from number ");
        }
       int shift = l- 1;
       for (; shift >= 0 ; shift--) {
           int bit = (n >> shift) & 1;
           if (bit == 1) {
               binary.append("1");
           } else {
               binary.append("0");
           }
       }
       return binary.toString();
   }

    public static void main(String[] args) throws Exception {
        System.out.println(" binary = " + toBinary(7, 4));
        System.out.println(" binary = " + Integer.toString(7,2));
    }
}
Artavazd Manukyan
fuente
Resultados binario = 0111 binario = 111
Artavazd Manukyan
1
String hexString = String.format ("% 2s", Integer.toHexString (h)). Replace ('', '0');
Artavazd Manukyan
5

Esto es algo que escribí hace unos minutos simplemente jugando. ¡Espero eso ayude!

public class Main {

public static void main(String[] args) {

    ArrayList<Integer> powers = new ArrayList<Integer>();
    ArrayList<Integer> binaryStore = new ArrayList<Integer>();

    powers.add(128);
    powers.add(64);
    powers.add(32);
    powers.add(16);
    powers.add(8);
    powers.add(4);
    powers.add(2);
    powers.add(1);

    Scanner sc = new Scanner(System.in);
    System.out.println("Welcome to Paden9000 binary converter. Please enter an integer you wish to convert: ");
    int input = sc.nextInt();
    int printableInput = input;

    for (int i : powers) {
        if (input < i) {
            binaryStore.add(0);     
        } else {
            input = input - i;
            binaryStore.add(1);             
        }           
    }

    String newString= binaryStore.toString();
    String finalOutput = newString.replace("[", "")
            .replace(" ", "")
            .replace("]", "")
            .replace(",", "");

    System.out.println("Integer value: " + printableInput + "\nBinary value: " + finalOutput);
    sc.close();
}   

}

AbbyPaden
fuente
5

Convertir entero a binario:

import java.util.Scanner;

public class IntegerToBinary {

    public static void main(String[] args) {

        Scanner input = new Scanner( System.in );

        System.out.println("Enter Integer: ");
        String integerString =input.nextLine();

        System.out.println("Binary Number: "+Integer.toBinaryString(Integer.parseInt(integerString)));
    }

}

Salida:

Ingresar entero:

10

Número binario: 1010

Sidarth
fuente
La promoción excesiva de un producto / recurso específico (que eliminé aquí) puede ser percibida por la comunidad como spam . Eche un vistazo al centro de ayuda , especialmente ¿Qué tipo de comportamiento se espera de los usuarios? Última sección: Evite la autopromoción abierta . También te puede interesar ¿Cómo puedo anunciar en Stack Overflow? .
Tunaki
4

Usando la función incorporada:

String binaryNum = Integer.toBinaryString(int num);

Si no desea utilizar la función integrada para convertir int a binario, también puede hacer esto:

import java.util.*;
public class IntToBinary {
    public static void main(String[] args) {
        Scanner d = new Scanner(System.in);
        int n;
        n = d.nextInt();
        StringBuilder sb = new StringBuilder();
        while(n > 0){
        int r = n%2;
        sb.append(r);
        n = n/2;
        }
        System.out.println(sb.reverse());        
    }
}
Rachit Srivastava
fuente
4

El enfoque más simple es verificar si el número es impar o no. Si es, por definición, su número binario más a la derecha será "1" (2 ^ 0). Después de determinar esto, desplazamos un poco el número a la derecha y verificamos el mismo valor utilizando la recursividad.

@Test
public void shouldPrintBinary() {
    StringBuilder sb = new StringBuilder();
    convert(1234, sb);
}

private void convert(int n, StringBuilder sb) {

    if (n > 0) {
        sb.append(n % 2);
        convert(n >> 1, sb);
    } else {
        System.out.println(sb.reverse().toString());
    }
}
nada salvaje
fuente
1
Esto, creo, es una forma realmente elegante de hacerlo manualmente, si realmente no desea utilizar los métodos integrados.
praneetloke
4

Aquí están mis métodos, es un poco convincente que la cantidad de bytes fijos

private void printByte(int value) {
String currentBinary = Integer.toBinaryString(256 + value);
System.out.println(currentBinary.substring(currentBinary.length() - 8));
}

public int binaryToInteger(String binary) {
char[] numbers = binary.toCharArray();
int result = 0;
for(int i=numbers.length - 1; i>=0; i--)
  if(numbers[i]=='1')
    result += Math.pow(2, (numbers.length-i - 1));
return result;
}
Aleksey Timoshchenko
fuente
3

Usar bit shift es un poco más rápido ...

public static String convertDecimalToBinary(int N) {

    StringBuilder binary = new StringBuilder(32);

    while (N > 0 ) {
        binary.append( N % 2 );
        N >>= 1;
     }

    return binary.reverse().toString();

}
Eddie B
fuente
2

Esto se puede expresar en pseudocódigo como:

while(n > 0):
    remainder = n%2;
    n = n/2;
    Insert remainder to front of a list or push onto a stack

Print list or stack
amoljdv06
fuente
1

Realmente deberías usar Integer.toBinaryString () (como se muestra arriba), pero si por alguna razón quieres la tuya propia:

// Like Integer.toBinaryString, but always returns 32 chars
public static String asBitString(int value) {
  final char[] buf = new char[32];
  for (int i = 31; i >= 0; i--) {
    buf[31 - i] = ((1 << i) & value) == 0 ? '0' : '1';
  }
  return new String(buf);
}
pensar demasiado
fuente
0

Esto debería ser bastante simple con algo como esto:

public static String toBinary(int number){
    StringBuilder sb = new StringBuilder();

    if(number == 0)
        return "0";
    while(number>=1){
        sb.append(number%2);
        number = number / 2;
    }

    return sb.reverse().toString();

}
Sandeep Saini
fuente
0

También puede usar el bucle while para convertir un int a binario. Me gusta esto,

import java.util.Scanner;

public class IntegerToBinary
{
   public static void main(String[] args)
   {
      int num;
      String str = "";
      Scanner sc = new Scanner(System.in);
      System.out.print("Please enter the a number : ");
      num = sc.nextInt();
      while(num > 0)
      {
         int y = num % 2;
         str = y + str;
         num = num / 2;
      }
      System.out.println("The binary conversion is : " + str);
      sc.close();
   }
}

Fuente y referencia: convierta int a binario en el ejemplo de java .

Shiva
fuente
0
public class BinaryConverter {

    public static String binaryConverter(int number) {
        String binary = "";
        if (number == 1){
            binary = "1";
            System.out.print(binary);
            return binary;
        }
        if (number == 0){
            binary = "0";
            System.out.print(binary);
            return binary;
        }
        if (number > 1) {
            String i = Integer.toString(number % 2);

            binary = binary + i;
            binaryConverter(number/2);
        }
        System.out.print(binary);
        return binary;
    }
}
Ahmed Saka
fuente