Conversión de decimal a binario en Java

Estoy tratando de convertir números decimales a binarios a partir de la entrada del usuario usando Java.

Estoy recibiendo errores.

package reversedBinary; import java.util.Scanner; public class ReversedBinary { public static void main(String[] args) { int number; Scanner in = new Scanner(System.in); System.out.println("Enter a positive integer"); number=in.nextInt(); if (number <0) System.out.println("Error: Not a positive integer"); else { System.out.print("Convert to binary is:"); System.out.print(binaryform(number)); } } private static Object binaryform(int number) { int remainder; if (number >1); System.out.print(remainder); { return null; } } } 

¿Cómo convierto un decimal a binario en Java?

Su método binaryForm está atrapado en una recursión infinita, debe devolver si el number <= 1 :

 import java.util.Scanner; public class ReversedBinary { public static void main(String[] args) { int number; Scanner in = new Scanner(System.in); System.out.println("Enter a positive integer"); number = in.nextInt(); if (number < 0) { System.out.println("Error: Not a positive integer"); } else { System.out.print("Convert to binary is:"); //System.out.print(binaryform(number)); printBinaryform(number); } } private static void printBinaryform(int number) { int remainder; if (number <= 1) { System.out.print(number); return; // KICK OUT OF THE RECURSION } remainder = number % 2; printBinaryform(number >> 1); System.out.print(remainder); } } 

Integer.toBinaryString() es un método incorporado y funcionará bastante bien.

 Integer.toString(n,8) // decimal to octal Integer.toString(n,2) // decimal to binary Integer.toString(n,16) //decimal to Hex 

donde n = número decimal.

 /** * @param no * : Decimal no * @return binary as integer array */ public int[] convertBinary(int no) { int i = 0, temp[] = new int[7]; int binary[]; while (no > 0) { temp[i++] = no % 2; no /= 2; } binary = new int[i]; int k = 0; for (int j = i - 1; j >= 0; j--) { binary[k++] = temp[j]; } return binary; } 

Solo quiero agregar, para cualquiera que use:

  String x=Integer.toBinaryString() 

para obtener una Cadena de números binarios y quiere convertir esa cadena en un int. Si utiliza

  int y=Integer.parseInt(x) 

obtendrá un error NumberFormatException.

Lo que hice para convertir String x en Integers, primero se convirtió cada Char individual en la Cadena x en un único Char en un ciclo for.

  char t = (x.charAt(z)); 

Luego convertí cada Char nuevamente en una Cadena individual,

  String u=String.valueOf(t); 

luego analizó cada cadena en un entero.

Id figure Id publicar esto, porque me tomó un tiempo encontrar la manera de obtener un binario como 01010101 en forma entera.

 public static void main(String h[]) { Scanner sc=new Scanner(System.in); int decimal=sc.nextInt(); String binary=""; if(decimal<=0) { System.out.println("Please Enter more than 0"); } else { while(decimal>0) { binary=(decimal%2)+binary; decimal=decimal/2; } System.out.println("binary is:"+binary); } } 

Si desea revertir la forma binaria calculada, puede usar la clase StringBuffer y simplemente usar el método reverse (). Aquí hay un progtwig de ejemplo que explicará su uso y calculará el binario

clase pública Binario {

 public StringBuffer calculateBinary(int number){ StringBuffer sBuf = new StringBuffer(); int temp=0; while(number>0){ temp = number%2; sBuf.append(temp); number = number / 2; } return sBuf.reverse(); } 

}

clase pública Principal {

 public static void main(String[] args) throws IOException { System.out.println("enter the number you want to convert"); BufferedReader bReader = new BufferedReader(newInputStreamReader(System.in)); int number = Integer.parseInt(bReader.readLine()); Binary binaryObject = new Binary(); StringBuffer result = binaryObject.calculateBinary(number); System.out.println(result); } 

}

Binario a Decimal sin utilizar Integer.ParseInt ():

 import java.util.Scanner; //convert binary to decimal number in java without using Integer.parseInt() method. public class BinaryToDecimalWithOutParseInt { public static void main(String[] args) { Scanner input = new Scanner( System.in ); System.out.println("Enter a binary number: "); int binarynum =input.nextInt(); int binary=binarynum; int decimal = 0; int power = 0; while(true){ if(binary == 0){ break; } else { int temp = binary%10; decimal += temp*Math.pow(2, power); binary = binary/10; power++; } } System.out.println("Binary="+binarynum+" Decimal="+decimal); ; } } 

Salida:

Ingresa un número binario:

1010

Binario = 1010 Decimal = 10


Binario a decimal utilizando Integer.parseInt ():

 import java.util.Scanner; //convert binary to decimal number in java using Integer.parseInt() method. public class BinaryToDecimalWithParseInt { public static void main(String[] args) { Scanner input = new Scanner( System.in ); System.out.println("Enter a binary number: "); String binaryString =input.nextLine(); System.out.println("Result: "+Integer.parseInt(binaryString,2)); } } 

Salida:

Ingresa un número binario:

1010

Resultado: 10

Un progtwig bastante simple que eficiente, pero hace el trabajo.

  Scanner sc = new Scanner(System.in); System.out.println("Give me my binaries"); int str = sc.nextInt(2); System.out.println(str); 

Lo siguiente convierte decimal a binario con Complejidad de tiempo: O (n) Tiempo lineal y sin ninguna función java incorporada

 private static int decimalToBinary(int N) { StringBuilder builder = new StringBuilder(); int base = 2; while (N != 0) { int reminder = N % base; builder.append(reminder); N = N / base; } return Integer.parseInt(builder.reverse().toString()); } 

En C #, pero es lo mismo que en Java:

 public static void findOnes2(int num) { int count = 0; // count 1's String snum = ""; // final binary representation int rem = 0; // remainder while (num != 0) { rem = num % 2; // grab remainder snum += rem.ToString(); // build the binary rep num = num / 2; if (rem == 1) // check if we have a 1 count++; // if so add 1 to the count } char[] arr = snum.ToCharArray(); Array.Reverse(arr); String snum2 = new string(arr); Console.WriteLine("Reporting ..."); Console.WriteLine("The binary representation :" + snum2); Console.WriteLine("The number of 1's is :" + count); } public static void Main() { findOnes2(10); } 

Puede parecer tonto, pero si quieres probar la función de utilidad

 System.out.println(Integer.parseInt((Integer.toString(i,2)))); 

debe haber algún método de utilidad para hacerlo directamente, no puedo recordar.

 public class BinaryConvert{ public static void main(String[] args){ System.out.println("Binary Result: "+ doBin(45)); } static String doBin(int n){ int b = 2; String r = ""; String c = ""; do{ c += (n % b); n /= b; }while(n != 0); for(int i = (c.length() - 1); i >=0; i--){ r += c.charAt(i); } return r; } } 

Acabo de resolver esto yo mismo, y quería compartir mi respuesta porque incluye la inversión binaria y luego la conversión a decimal. No soy un codificador con mucha experiencia, pero espero que esto sea útil para otra persona.

Lo que hice fue insertar los datos binarios en una stack mientras lo estaba convirtiendo, y luego lo quité para invertirlo y convertirlo de nuevo a decimal.

 import java.util.Scanner; import java.util.Stack; public class ReversedBinary { private Stack st; public ReversedBinary() { st = new Stack<>(); } private int decimaltoBinary(int dec) { if(dec == 0 || dec == 1) { st.push(dec % 2); return dec; } st.push(dec % 2); dec = decimaltoBinary(dec / 2); return dec; } private int reversedtoDecimal() { int revDec = st.pop(); int i = 1; while(!st.isEmpty()) { revDec += st.pop() * Math.pow(2, i++); } return revDec; } public static void main(String[] args) { ReversedBinary rev = new ReversedBinary(); System.out.println("Please enter a positive integer:"); Scanner sc = new Scanner(System.in); while(sc.hasNextLine()) { int input = Integer.parseInt(sc.nextLine()); if(input < 1 || input > 1000000000) { System.out.println("Integer must be between 1 and 1000000000!"); } else { rev.decimaltoBinary(input); System.out.println("Binary to reversed, converted to decimal: " + rev.reversedtoDecimal()); } } } } 

Puede usar el concepto de Wrapper Classes para convertir directamente un decimal a binario, hexadecimal y octal. A continuación, se muestra un progtwig muy simple para convertir el binario decimal a inverso. Esperanza que contribuye a su conocimiento de Java

 public class decimalToBinary { public static void main(String[] args) { int a=43;//input String string=Integer.toBinaryString(a); //decimal to binary(string) StringBuffer buffer = new StringBuffer(string); //string to binary buffer.reverse(); //reverse of string buffer System.out.println(buffer); //output as string } } 
 import java.util.*; public class BinaryNumber { public static void main(String[] args) { Scanner scan = new Scanner(System.in); System.out.println("Enter the number"); int n = scan.nextInt(); int rem; int num =n; String str=""; while(num>0) { rem = num%2; str = rem + str; num=num/2; } System.out.println("the bunary number for "+n+" is : "+str); } } 

Este es un procedimiento muy básico, lo obtuve después de poner un procedimiento general en papel.

 import java.util.Scanner; public class DecimalToBinary { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.println("Enter a Number:"); int number = input.nextInt(); while(number!=0) { if(number%2==0) { number/=2; System.out.print(0);//Example: 10/2 = 5 -> 0 } else if(number%2==1) { number/=2; System.out.print(1);// 5/2 = 2 -> 1 } else if(number==2) { number/=2; System.out.print(01);// 2/2 = 0 -> 01 ->0101 } } } } 
 public static void main(String[] args) { Scanner in =new Scanner(System.in); System.out.print("Put a number : "); int a=in.nextInt(); StringBuffer b=new StringBuffer(); while(a>=1) { if(a%2!=0) { b.append(1); } else if(a%2==0) { b.append(0); } a /=2; } System.out.println(b.reverse()); } 
 //converts decimal to binary string String convertToBinary(int decimalNumber){ String binary=""; while(decimalNumber>0){ int remainder=decimalNumber%2; //line below ensures the remainders are reversed binary=remainder+binary; decimalNumber=decimalNumber/2; } return binary; } 

Una de las soluciones más rápidas:

 public static long getBinary(int n) { long res=0; int t=0; while(n>1) { t= (int) (Math.log(n)/Math.log(2)); res = res+(long)(Math.pow(10, t)); n-=Math.pow(2, t); } return res; } 

Aún mejor con StringBuilder usando insert () delante de la cadena decimal en construcción, sin llamar a reverse (),

 static String toBinary(int n) { if (n == 0) { return "0"; } StringBuilder bldr = new StringBuilder(); while (n > 0) { bldr = bldr.insert(0, n % 2); n = n / 2; } return bldr.toString(); } 

Bueno, puedes usar while loop, así,

 import java.util.Scanner; public class DecimalToBinaryExample { public static void main(String[] args) { int num; int a = 0; Scanner sc = new Scanner(System.in); System.out.println("Please enter a decimal number : "); num = sc.nextInt(); int binary[] = new int[100]; while(num != 0) { binary[a] = num % 2; num = num / 2; a++; } System.out.println("The binary value is : "); for(int b = a - 1; b >= 0; b--) { System.out.println("" + binary[b]); } sc.close(); } } 

Puedes referir el ejemplo a continuación para una buena explicación,

convertir el decimal al ejemplo binario .

¡Todos tus problemas se pueden resolver con un solo trazador de líneas! Para incorporar mi solución a su proyecto, simplemente elimine su binaryform(int number) y reemplace System.out.print(binaryform(number)); con System.out.println(Integer.toBinaryString(number)); .

No es necesario tener ninguna función incorporada de Java. La recursión simple servirá.

 public class DecimaltoBinaryTest { public static void main(String[] args) { DecimaltoBinary decimaltoBinary = new DecimaltoBinary(); System.out.println("hello " + decimaltoBinary.convertToBinary(1000,0)); } } class DecimaltoBinary { public DecimaltoBinary() { } public int convertToBinary(int num,int binary) { if (num == 0 || num == 1) { return num; } binary = convertToBinary(num / 2, binary); binary = binary * 10 + (num % 2); return binary; } } 

Aquí está la conversión de decimal a binario de tres maneras diferentes

 import java.util.Scanner; public static Scanner scan = new Scanner(System.in); public static void conversionLogical(int ip){ ////////////My Method One String str=""; do{ str=ip%2+str; ip=ip/2; }while(ip!=1); System.out.print(1+str); } public static void byMethod(int ip){ /////////////Online Method //Integer ii=new Integer(ip); System.out.print(Integer.toBinaryString(ip)); } public static String recursion(int ip){ ////////////Using My Recursion if(ip==1) return "1"; return (DecToBin.recursion(ip/2)+(ip%2)); } public static void main(String[] args) { ///Main Method int ip; System.out.println("Enter Positive Integer"); ip = scan.nextInt(); System.out.print("\nResult 1 = "); DecToBin.conversionLogical(ip); System.out.print("\nResult 2 = "); DecToBin.byMethod(ip); System.out.println("\nResult 3 = "+DecToBin.recursion(ip)); } } 
  int n = 13; String binary = ""; //decimal to binary while (n > 0) { int d = n & 1; binary = d + binary; n = n >> 1; } System.out.println(binary); //binary to decimal int power = 1; n = 0; for (int i = binary.length() - 1; i >= 0; i--) { n = n + Character.getNumericValue(binary.charAt(i)) * power; power = power * 2; } System.out.println(n);