Conversor de números decimales a binario

  • 3 Respuestas
  • 3155 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado darkbouser

  • *
  • Underc0der
  • Mensajes: 16
  • Actividad:
    0%
  • Reputación 0
  • las cosas pasan porque tienen que pasar
    • Ver Perfil

Conversor de números decimales a binario

  • en: Diciembre 27, 2014, 01:23:10 pm
 Saludos y felices fiestas.
 
   Quiero compartir un código que hice ayer por la noche porque estaba aburrido y me gusta estudiar números binarios. Hice un convertidor de números decimales a números binarios en java. Me gustó mucho la manera con que lo hice porque da exactamente el número de bits que le corresponde a cada número a través de una lista simple. Esta aplicación se puede hacer de muchas formas, solo he hecho esta y se que la manera más sencilla es con esta estructura dinámica. El resto fue con propiedades matemáticas y un método sencillo para transformar decimales a binario.
 
 A continuación, les comparto el código fuente de cada clase.

CLASE NODO

Código: Java
  1. public class Nodo {
  2.    
  3.     private int _data;
  4.     private Nodo _prox;
  5.    
  6.     public Nodo(int _data)
  7.     {
  8.         this._data = _data;
  9.         this._prox = null;
  10.     }
  11.  
  12.     public int getData() {
  13.         return _data;
  14.     }
  15.  
  16.     public void setData(int _data) {
  17.         this._data = _data;
  18.     }
  19.  
  20.     public Nodo getProx() {
  21.         return _prox;
  22.     }
  23.  
  24.     public void setProx(Nodo _prox) {
  25.         this._prox = _prox;
  26.     }
  27.    
  28.     public void Mostrar()
  29.     {
  30.         You are not allowed to view links. Register or Login.out.print(_data);
  31.     }
  32. }
  33.  

CLASE LISTA SIMPLE
Código: Java
  1. public class ListaSimple {
  2.    
  3.     private Nodo _cabeza;
  4.    
  5.     public ListaSimple()
  6.     {
  7.         this._cabeza = null;
  8.     }
  9.  
  10.     public Nodo getCabeza() {
  11.         return _cabeza;
  12.     }
  13.  
  14.     public void setCabeza(Nodo _cabeza) {
  15.         this._cabeza = _cabeza;
  16.     }
  17.    
  18.     public void InsertarPrimero(Nodo n)
  19.     {
  20.         if(_cabeza == null)
  21.         {
  22.            _cabeza = n;
  23.         }
  24.         else
  25.         {
  26.            n.setProx(_cabeza);
  27.            _cabeza = n;
  28.         }
  29.     }
  30.    
  31.     public void InsertaFinal(Nodo n)
  32.     {
  33.         if(_cabeza == null)
  34.         {
  35.             _cabeza = n;
  36.            
  37.         }
  38.         else
  39.         {
  40.             Nodo aux = _cabeza;
  41.            
  42.             while(aux.getProx() != null)
  43.             {
  44.                 aux = aux.getProx();
  45.             }
  46.            
  47.             aux.setProx(n);
  48.         }
  49.     }
  50.    
  51.     public Nodo EliminaPrimero()
  52.     {
  53.         if(_cabeza == null)
  54.         {
  55.             return null;
  56.         }
  57.         else if(_cabeza.getProx() == null)
  58.         {
  59.            Nodo aux = _cabeza;
  60.            _cabeza = null;
  61.            return aux;
  62.         }
  63.         else
  64.         {
  65.             Nodo aux = _cabeza;
  66.             _cabeza = aux.getProx();
  67.             aux.setProx(null);
  68.             return aux;
  69.            
  70.         }
  71.     }
  72.    
  73.  
  74.    
  75.     public void EliminarTodo()
  76.     {
  77.        int cont = 0;
  78.        Nodo aux = _cabeza;
  79.        
  80.        while(aux != null)
  81.        {
  82.            cont++;
  83.            aux = aux.getProx();
  84.        }
  85.        
  86.         for (int i = 0; i < cont; i++) {
  87.             this.EliminaPrimero();
  88.         }
  89.     }
  90.    
  91.     public void Mostrar()
  92.     {
  93.         Nodo aux = _cabeza;
  94.        
  95.         while(aux != null)
  96.         {
  97.             aux.Mostrar();
  98.             aux = aux.getProx();
  99.         }
  100.     }
  101.    
  102. }
  103.  

CLASE APLICACIÓN BINARIO

Código: Java
  1. public class Binario {
  2.  
  3.     /**
  4.      * @param args the command line arguments
  5.      */
  6.    
  7.    
  8.     public int ContarBits(int n ,Binario bin)
  9.     {
  10.      int x = 0;
  11.             for (int i = 1; i <= n; i++) {
  12.                if(bin.EsPotenciade2(i))
  13.                {
  14.                    x++;
  15.                }
  16.         }
  17.            
  18.             return x;
  19.     }
  20.    
  21.    
  22.     public void TransformarBinario(int n, Binario bin, ListaSimple ls)
  23.     {
  24.         int cont = bin.ContarBits(n, bin);
  25.        
  26.          for (int i = 1; i <= cont; i++) {
  27.              
  28.              if(n % 2 == 0)
  29.              {
  30.                  ls.InsertarPrimero(new Nodo(0));
  31.              }
  32.              else
  33.              {
  34.                  ls.InsertarPrimero(new Nodo(1));
  35.              }
  36.              
  37.              n = n / 2;
  38.         }
  39.      
  40.     }
  41.    
  42.     public boolean EsPotenciade2(int n)
  43.     {
  44.         return ((You are not allowed to view links. Register or Login.log(n) / You are not allowed to view links. Register or Login.log(2)) % 1 == 0);
  45.     }
  46.    
  47.    
  48.    
  49.    
  50.    
  51.     public static void main(You are not allowed to view links. Register or Login[] args) {
  52.        
  53.         Scanner sc = new Scanner(You are not allowed to view links. Register or Login.in);
  54.         ListaSimple ls = new ListaSimple();
  55.         Binario bin = new Binario();
  56.         int x = 0;
  57.         int num = 0;
  58.         int rsp = 1;
  59.         while(rsp == 1)
  60.         {    
  61.             You are not allowed to view links. Register or Login.out.println("Ingrese un numero");
  62.             num = sc.nextInt();
  63.             bin.ContarBits(num, bin);
  64.             bin.TransformarBinario(num, bin, ls);
  65.             ls.Mostrar();
  66.          
  67.             You are not allowed to view links. Register or Login.out.println("\n Desea convertir otro numero decimal a binario ? si(1), no(0) \n");
  68.             //SE INICIALIZA OTRA VEZ PARA SER UTILIZADO NUEVAMENTE
  69.             num = 0;
  70.             ls.EliminarTodo();
  71.             rsp = sc.nextInt();
  72.         }
  73.     }
  74.    
  75. }
  76.  
  77.  


 Eso fue todo. Espero que les haya gustado. Saludos otra vez y feliz año nuevo.
« Última modificación: Diciembre 29, 2014, 08:46:23 am por Expermicid »

Desconectado Flemon

  • *
  • Underc0der
  • Mensajes: 235
  • Actividad:
    0%
  • Reputación 0
  • NO HAY FORMA DE DETENERME!!
    • Ver Perfil
    • Email

Re:Conversor de números decimales a binario

  • en: Enero 14, 2015, 11:43:52 am
Lindo Codigo, se ve bueno, sigue creando cosas!!! un abrazo
No intentes pararme, trata de defenderte, trata de matarme, pero de cualqueir forma TE SUPERARE

Desconectado DeBobiPro

  • *
  • Ex-Staff
  • *****
  • Mensajes: 328
  • Actividad:
    3.33%
  • Reputación 6
  • Como no sabía que era imposible, lo hice.
    • Ver Perfil

Re:Conversor de números decimales a binario

  • en: Enero 14, 2015, 11:50:49 am
nunca está de más un código así!

Se agradece SALUDOS!
Nivel 77 You are not allowed to view links. Register or Login

Desconectado Hu3c0

  • *
  • Underc0der
  • Mensajes: 433
  • Actividad:
    0%
  • Reputación 0
  • In the middle Netbeans
    • Ver Perfil

Re:Conversor de números decimales a binario

  • en: Febrero 09, 2015, 03:31:16 pm
Aqui te pongo mi código para pasar de decimal a binario:

 
Código: Java
  1. public static void main (You are not allowed to view links. Register or Login [] args){
  2.  Scanner sc1 = new Scanner(You are not allowed to view links. Register or Login.in);
  3.  You are not allowed to view links. Register or Login.out.println("Welcome to Hu3c0 converter decimal a binario");
  4.  You are not allowed to view links. Register or Login.out.println("Introduzca un número entero");
  5.  int entradaUno=sc1.nextInt();
  6.  You are not allowed to view links. Register or Login.out.println(" El número que ha introducido es = "+ entradaUno+" En binario es igual a = "+ +You are not allowed to view links. Register or Login.toBinaryString(entradaUno));
  7. }

Espero que te guste, luego también se puede hacer un código en el que vaya dividiendo el número entero por 2 y vaya cogiendo los restos de la división lo vas metiendo en un array una vez el entero no se pueda dividir más por el número dos.
Coges y vas leyendo desde el último número del array hasta cero, más o menos sería esto:

   10 /2
     0  5 /2
          1 2 /2
             0  1 <<<<<<<<coges desde el útlimo hacia arriba y sería  el número 10 == a 1010 en binario

Espero que os haya gustado a mi es que me chiflan las matemáticas

    para hacer lo contrario sería asi:
     1    0    1    0
  2       2    4   10
      1   2    5   10<<<<<<<<<<Este es el número decimal del binario 1010
   

           
« Última modificación: Febrero 09, 2015, 04:06:07 pm por Expermicid »
You are not allowed to view links. Register or Login

 

Ejemplo – Programa – Números aleatorios sin repetición

Iniciado por Adalher

Respuestas: 0
Vistas: 1623
Último mensaje Abril 11, 2019, 08:04:38 am
por Adalher
[Java] La suma de los números primos

Iniciado por hackmin

Respuestas: 1
Vistas: 5426
Último mensaje Febrero 23, 2015, 01:34:24 pm
por mrobles
Ejercicio de Java - Números primos

Iniciado por [email protected]

Respuestas: 3
Vistas: 4357
Último mensaje Diciembre 03, 2018, 10:29:40 pm
por tr0n
Buscando los números primos, en Java

Iniciado por Yavi

Respuestas: 4
Vistas: 3070
Último mensaje Junio 10, 2015, 05:12:26 pm
por Yavi
[Codigo Basico] Mayor de 3 numeros

Iniciado por Only

Respuestas: 1
Vistas: 2846
Último mensaje Noviembre 06, 2011, 07:47:54 am
por sisvot1