Ir al contenido principal

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:

Comentarios

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

    ResponderBorrar
  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

    ResponderBorrar
    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

      Borrar
    2. hacelo tu po oeeee

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

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

    ResponderBorrar
  5. Algoritmo prueba

    Definir num Como Real;
    definir div como real;
    Definir res como real;
    definir i,j como entero;
    definir arr Como Real;;

    Dimension arr[100];

    i<-50;
    num<-0;


    Repetir
    Escribir "escribir decimal";
    Leer num;
    Hasta Que num>0

    Repetir
    div<-num/2;
    res<-num mod 2;

    arr[i]<-res;

    num<-trunc(div);

    i=i-1;
    Escribir num;
    Escribir "-------------";
    Hasta Que num<1

    Para j<-i+1 Hasta 50 Con Paso 1 Hacer
    Escribir arr[j];
    Fin Para

    FinAlgoritmo

    ResponderBorrar
  6. Hola que pena estaba revisando lo que hacen pero una pregunta como seria si quiciera convertir un numero menor que 1 por ejemplo 0.258

    ResponderBorrar

Publicar un comentario

Entradas más populares de este blog

Buscador en tiempo real con AJAX, PHP y MySQL

Buscador realizado en HTML utilizando como lenguaje de programación PHP , la tecnología AJAX y a MySQL como motor de base de datos.

Funciones (subprocesos) en PSeInt

A partir de la version 20121010 (10/Octubre/2012) PSeInt permite la posibilidad de definir funciones al que el creador del mismo bautizó como subprocesos , en este tutorial explicaremos brevemente cómo se tratan dichas funciones. Para empezar una función no es más que un bloque de código con un determinado fin o propósito, podemos definir más de una y nos permiten ahorrar líneas código si nuestros programas son muy extensos o hay codificación redundante.