Programa Java para convertir un número decimal a binario y contar el número de 1

Según el sistema numérico, los cálculos predeterminados se llevan a cabo sobre números decimales cuya base está estandarizada en 10. La máquina calcula toda la ejecución en la capa física en 0 y 1. Entonces surge la necesidad de un sistema numérico con base 2 conocido como sistema numérico binario. Un número binario se puede convertir a un número decimal y viceversa. En Java hay 4 tipos de números:

Tipos de números  Base
Binario 2
Octa-Decimal 8
Decimal 10
hexadecimal dieciséis

Enfoques: en Java, hay 2 formas de convertir, ya sea utilizando métodos predefinidos o construyendo lógica de tercer grado, como se indica a continuación: 

  1. Uso del método Integer.toBinaryString (clase contenedora de enteros)
  2. Usando el método de fuerza bruta (sin ningún uso de clases predefinidas)

Ejemplos:

Input. 1: 10
Output 1: The binary equivalent of 10 is : 1010
          Number of 1s is : 2

Input  2: 15
Output 2: The binary equivalent of 15 is : 1111
          Number of 1s is 4

Enfoque 1: uso del método toBinaryString() : representa el número que se va a convertir en binario. La clase Integer de Java proporciona algunos métodos útiles para manejar números enteros. Uno de esos métodos es Integer.toBinaryString(int x) 

Sintaxis:

public static String toBinaryString(int variable_name)

Parámetros: Entero decimal a convertir.

Tipo de retorno: string que contiene la representación binaria del entero convertido o simplemente el equivalente binario del entero como un objeto de string.

Excepciones: No hay excepciones lanzadas por este método  .

Parámetro: Toma un parámetro de tipo Integer (o int)  

Implementación: para contar el número de 1, verifique si cada carácter de la string binaria obtenida es igual a 1 o no.

Java

// Java program to convert decimal to binary number
// and counting number of 1's in it
  
public class GFG {
  
    // Function to convert decimal to binary
    void convertAndCount(int num)
    {
        // Store the count of 1s currently 0
        int count = 0;
  
        // Returns a String object representing
        // binary equivalent of passed decimal number
        String binary = Integer.toBinaryString(num);
  
        // Iterating over obtained string using length
        // function
        for (int i = 0; i < binary.length(); i++)
  
            // Checking 1 is present in binary
            if (binary.charAt(i) == '1')
  
                // Increment the count
                // if any char equals 1
                count++;
  
        // Printing the binary equivalent
        System.out.println("The binary equivalent of " + num
                           + " is : " + binary);
  
        // Printing the no of 1 in above binary number
        System.out.println("Number of 1s is : " + count);
    }
  
    // Main driver method
    public static void main(String[] args)
    {
        // Creating object in main
        GFG obj = new GFG();
  
        // Calling the convertAndCount() method
        // over the integer value 18
        obj.convertAndCount(18);
    }
}
Producción

The binary equivalent of 18 is : 10010
Number of 1s is : 2

Enfoque 2: Sin usar variables predefinidas

  • Dividir el número decimal por 2 que se va a convertir en binario
  • Almacenar el resto

Java

// Java program to convert decimal to binary number
// and counting number of 1's in it
  
public class GFG {
  
    // Function to convert decimal to binary
    void convertAndCount(int num)
    {
        int temp = num; // a temporary variable to store the
                        // value of num
  
        // to store the binary value
        int[] binary = new int[20];
  
        // to store the count of 1s
        int count = 0;
        int i;
  
        // to iterate through the loop and keep a
        // count of no.of digits in the obtained binary
        for (i = 0; temp > 0; i++) {
  
            // divide the number by 2
            // and store the remainder
            temp /= 2;
            binary[i] = temp % 2;
  
            // If 1 is present in binary
            if (binary[i] == 1)
  
                // increment the count if any digit
                // is equal to 1
                count++;
        }
  
        // Printing binary of decimal number
        System.out.print("The binary equivalent of " + num
                         + " is : ");
  
        // Iterating over array
        for (int j = i - 1; j >= 0; j--)
  
            // Printing obtained array in reverse order
            System.out.print(binary[j]);
  
        // Printing number of 1's
        System.out.println("\nNumber of 1s is : " + count);
    }
  
    // Main driver method
    public static void main(String[] args)
    {
        // Creating class GFG object in main
        GFG obj = new GFG();
  
        obj.convertAndCount(18);
        // calling convertAndCount() method on decimal
        // over the value 18
    }
}
Producción

The binary equivalent of 18 is : 01001
Number of 1s is : 2

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *