Mostrando entradas con la etiqueta sistema binario. Mostrar todas las entradas
Mostrando entradas con la etiqueta sistema binario. Mostrar todas las entradas

sábado, 12 de julio de 2014

De sistema decimal a sistema binario en c++ y Java – Abogado – Dominios – Auto



Para convertir un número de sistema decimal a binario debemosdividir este número entre 2, hasta que el dividendo seamenor a 2, es decir 1.
Luego, se tomarán los restos de la división desde el último hasta el primero.

Ejemplo:

71 dividido entre 2 es igual a35 y el residuo igual a1.
35 dividido entre 2 es igual a17 y el residuo igual a1.
17 dividido entre 2 es igual a8 y el residuo igual a1.
8 dividido entre 2 es igual a4 y el residuo igual a0.
4 dividido entre 2 es igual a2 y el residuo igual a0.
2 dividido entre 2 es igual a1 y el residuo igual a0.
1 dividido entre 2 es igual a 0 y el residuo igual a1.

Entonces, en sistema binario71 se escribe 1000111.

Un ejemplo más gráfico


¿Como hacer esta operación en c++?

#include iostream

using namespace std;

int main(){
int numero, dividendo, resto, divisor = 2;
string binario = "";
cout "Ingrese el numero decimal a convertir a sistema binario" endl;
cin numero;
dividendo = numero;
while(dividendo = divisor){ //Mientras el dividendo sea mayor o igual que el divisor, es decir, mayor o igual que 2.
resto = dividendo % 2;
if(resto == 1)
binario = "1" + binario; //Si el resto es igual a 1 concatenamos 1 a la variable string llamada binario
else
binario = "0" + binario; // Sino concatemanos 0
//Es importante este orden de concatenación (primero el bit y luego el valor de la variable) esto para que nuestro número
//en sistema binario esté ordenado correctamente.
dividendo = dividendo/divisor; // Actualizamos el valor del dividendo dividiendolo entre 2.
}
if(dividendo == 1)
binario = "1" + binario; // Por último sí el valor final del dividendo es 1 concatenamos 1 sino concatenamos 0.
else
binario = "0" + binario;
cout "En sistema binario " numero " se escribe " binario endl;
return 0;
}

En este ejemplo lo que haremos será leer el número que queremos convertir a sistema binario, luego el programa se encargará de realizar operaciones con el operador módulo (%) de c++ para saber el resto de cada división y luego ir concatenando estos restos de divisiones y formar el número en sistema binario. Estas concatenaciones las hacemos usando estructuras selectivas, según se cumpla que el resto sea igual a 1 o 0.

Otra manera de realizar este algoritmo en c++ es haciendo uso de la clasestringstreampara convertir número enteros en cadenas (strings).

#include iostream
#include sstream // Para convertir el resto de la division de int a string.

using namespace std;

int main(){
int numero, dividendo, resto, divisor = 2;
string binario = "", ordenado = "";
stringstream stream; // De int a string
cout "Ingrese el numero decimal a convertir a sistema binario" endl;
cin numero;
dividendo = numero;
while(dividendo = divisor){
resto = dividendo % 2;
stream resto; // Almacena el resto de las divisiones concatenandolas en el objeto stream.
dividendo = dividendo/divisor;
}
stream dividendo;
binario = stream.str(); //Almacenamos en la variable llamada binario de tipo string los valores concatenados del objeto stream.
for(unsigned int i = 0; i binario.size(); i++)//Debemos ordenar los bits
ordenado = binario[i] + ordenado;
cout "En sistema binario " numero " se escribe " ordenado endl;
return 0;
}

Así como el ejemplo anterior leemos el número que queremos saber su representación en el sistema binario. El resto de la división lo vamos almacenando en elobjeto stream de tipo stringstream. A medida que vamos almacenando los restos estos se irán concatenando. Luego de concatenar todos los restos los guardamos en una variable de tipo stringbinario = stream.str();. Finalmente esta representación está al revés. Sí queremos la representación de 71 nos mostrará 1110001. Esto lo ordenaremos con el siguiente método.

for(unsigned int i = 0; i binario.size(); i++)
ordenado = binario[i] + ordenado;

Recordar que el tipo de dato string es una cadena de caracteres y es por esto que lo podemos manipular de esta manera.

Ejecución:

Ingrese el numero decimal a convertir a sistema binario
567
En sistema binario 567 se escribe 1000110111

¿Y en Java?

import java.util.Scanner;

public class DecimalABinario {
public static void main(String[] ar){
Scanner teclado = new Scanner(System.in);
int dividendo, resto, divisor = 2, numero;
String binario = "";
System.out.println("Ingrese el numero decimal a convertir a sistema binario");
numero = teclado.nextInt();
dividendo = numero;
while(dividendo = divisor){ //Mientras el dividendo sea mayor o igual que el divisor, es decir, mayor o igual que 2.
resto = dividendo % 2;
if(resto == 1)
binario = "1" + binario; //Si el resto es igual a 1 concatenamos 1 a la variable string llamada binario
else
binario = "0" + binario; // Sino concatemanos 0
//Es importante este orden de concatenación (primero el bit y luego el valor de la variable) esto para que nuestro número
//en sistema binario esté ordenado correctamente.
dividendo = dividendo/divisor; // Actualizamos el valor del dividendo dividiendolo entre 2.
}
if(dividendo == 1)
binario = "1" + binario; // Por último sí el valor final del dividendo es 1 concatenamos 1 sino concatenamos 0.
else
binario = "0" + binario;
System.out.println("En sistema binario " + numero + " se escribe " + binario);
}
}

Funciona igual que el primer ejemplo en c++ solo que está escrito en Java.

Otra forma mas sencilla sin hacer uso de estructuras selectivas sería solo concatenar los restos de la división con la variable String.

import java.util.Scanner;

public class DecimalABinario2 {
public static void main(String[] ar){
Scanner teclado = new Scanner(System.in);
int dividendo, divisor = 2, numero, resto;
String binario = "";
System.out.println("Ingrese el numero decimal a convertir a sistema binario");
numero = teclado.nextInt();
dividendo = numero;
while(dividendo = divisor){
resto = dividendo % divisor;
binario = resto + binario;
dividendo = dividendo/divisor;
}
binario = dividendo + binario;
System.out.println("En sistema binario " + numero + " se escribe " + binario);
}
}

Ingresamos el número decimal que queremos su representación en sistema binario, luego hacemos un ciclo que se repetirá mientras el dividendo sea mayor o igual que el divisor, es decir, 2. Calculamos el resto de cada división y el resultado lo vamos concatenando en la variable binario. Finalmente el último valor del dividendo lo concatenamos a la variable binario y mostramos en pantalla la representación binaria del número que ingresamos.

Ejecución:

Ingrese el numero decimal a convertir a sistema binario
71
En sistema binario 71 se escribe 1000111


También te podría interesar:
[Ejercicio resuelto c++ POO Herencia Vectores MVC] Una Asociación de Lancheros trasladan turistas.
Cuenta regresiva de minutos y segundos con c++.
Escribir en bloc de notas con c++ [Archivo/Ficheros c++].
Abrir una direccion web con c++.
Generar número aleatorio en Java Math.random().
Elevar un número a una potencia en java Math.pow.
[Ejercicio resuelto Java] Cuadrante en que se encuentra un punto en el plano.