jueves, 25 de octubre de 2012

Convertir un decimal a binario en PSeInt

Utilizaremos el siguiente método para convertir números decimales a binarios (números que se sólo se componen de unos y ceros). El método es sencillo, consiste en dividir el número decimal entre dos, despues su cociente entre el mismo número y así sucesivamente hasta que finalmente el cociente (que se convierte en un divisor) sea igual a uno. Despúes organizamos los residuos desde el último al primero para obtener el número binario que buscamos.


Ejemplo:

Fuente: Wikipedia

El siguiente algoritmo en pseudocódigo codifica lo anterior.

En la línea 3 creamos un arreglo de nombre arr con suficiente posiciones para almacenar los residuos.
Despues creamos una variable contadora i inicializada en cero que hará de subíndice del arreglo.
En la variable num guardamos el número decimal ingresado.
Creamos un ciclo Repetir - Hasta para que dejé de hacer las operaciones cuando el cociente (divisor) sea igual a 1.
El ciclo contiene las instrucciones para hallar el binario:
Dividimos el numero ingresado entre 2 y lo guardamos en la variable div (nuestro cociente).
Calculamos el residuo con el operador % y lo guardamos en res.
Almacenamos en la posicion 0 del arreglo el residuo de la división.
A la variable num le asignamos la parte entera del cociente (funcion trunc) para que éste ahora sea dividido entre 2. Por último aumentamos en uno el subindice del arreglo. El ciclo termina hasta que num sea igual a 1.

Ahora mostramos los residuos que estan almacenados en el arreglo.

Primero comenzamos mostrando el cociente (línea 23) y despues con el ciclo Para los residuos que hallan el binario desde el último al primero.

Este es el perfil utilizado para correr correctamente el algoritmo:

7 comentarios:

  1. No me resulto el codigo que subieron en la imagen

    ResponderEliminar
  2. Salta error, pero al inicializar i en 1 y el para hasta 1 si sale. EXCELENTE, Gracias Jerry.
    Proceso binario
    Dimension arr[100];
    i<-1
    num<-0

    Escribir 'Digite un numero'
    Leer num

    Repetir

    div<-num/2
    res<-num%2

    arr[i]<-res

    num<-trunc(div)

    i<-i+1

    Hasta Que num=1

    Escribir num

    Para j<-i-1 Hasta 1 Con Paso -1 Hacer

    Escribir arr[j]

    FinPara

    FinProceso

    ResponderEliminar
    Respuestas
    1. variables no inicializadas de seguro corres el programa en modo flexible y no en modo esctricto no estan definidos los parametro div res num i que clase de binario resulta si no sale completo bad idea

      Eliminar
    2. hacelo tu po oeeee

      Eliminar
  3. gracias si sale cambiando la i<-0 por i<-1

    ResponderEliminar
  4. Como puedo hacer este proceso pero en SLE2?

    ResponderEliminar