Sei sulla pagina 1di 9

MENU PRINCIPAL

/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package calculadora_binaria3; import java.util.Scanner; /** * * @author JESUS */ public class Calculadora_Binaria3 { public static void main(String[] args) { Scanner teclado = new Scanner(System.in); int opcion; int opcion1, opcion2; boolean salir = false; do{ System.out.println("********** BIENVENIDO A LA CALCULADORA DE OPERACIONES CON NUMEROS BINARIOS ********** \n"); System.out.println("******************** \t Que operacin desea hacer \t ********************"); System.out.println("1.- Suma"); System.out.println("2.- Resta"); System.out.println("3.- Divisin"); System.out.println("4.- Multilicacin"); System.out.println("5.- Salir \n"); System.out.print("Opcion deseada : "); opcion = teclado.nextInt(); System.out.println(""); switch (opcion){ case 1 : System.out.println("***** INTRODUCE LOS VALORES *****"); System.out.print("Valor 1 : \n"); opcion1 = teclado.nextInt(); System.out.print("Valor 2 : \n"); opcion2 = teclado.nextInt(); System.out.println("\n\t\t BINARIO \t DECIMAL"); SumaBinario sum = new SumaBinario(); sum.operacionsum(opcion1, opcion2); System.out.println("\n Desea otra operacion? Y/N"); String sn = teclado.next();

String Y, N; if (sn.equals("Y") || sn.equals("y")){ salir = true; } else{ salir = false; } break; case 2 : System.out.println("***** INTRODUCE LOS VALORES *****"); System.out.print("Valor 1 : \n"); opcion1 = teclado.nextInt(); System.out.print("Valor 2 : \n"); opcion2 = teclado.nextInt(); RestaBinario rest = new RestaBinario(); salir = true; break; case 3 : System.out.println("***** INTRODUCE LOS VALORES *****"); System.out.print("Valor 1 : \n"); opcion1 = teclado.nextInt(); System.out.print("Valor 2 : \n"); opcion2 = teclado.nextInt(); DivisionBinario div = new DivisionBinario(); salir = true; break; case 4 : System.out.println("***** INTRODUCE LOS VALORES *****"); System.out.print("Valor 1 : \n"); opcion1 = teclado.nextInt(); System.out.print("Valor 2 : \n"); opcion2 = teclado.nextInt(); MultiBinario multi = new MultiBinario(); multi.operacionmulti(opcion1, opcion2); salir = true; break; case 5 : salir = false; break; default :

System.out.println("********** Opcion no valida, Intentalo de Nuevo ********** \n\n"); salir = true; } }while(salir == true); } }

RESTA
package calculadora_binaria3; /** * * @author JESUS */ public class RestaBinario { public void operacionrest (int valor1, int valor2){ int [] arregloa = decimaltobinari(valor1); int [] arreglob = decimaltobinari(valor2); System.out.print("Valor 1: \t");//se imprime el el primer valor convertido a bianrio for (int binario : arregloa) { System.out.print(binario); } System.out.print("\t\t" + valor1);//se imprimer el valor 1 en decimal System.out.println(); System.out.print("Valor 2: \t");//se imprime el el segundo valor convertido a bianrio for (int binario : arreglob) { System.out.print(binario); } System.out.print("\t\t" + valor2);//se imprimer el valor 2 en decimal System.out.println("\n--------------------------------------------"); int [] resultado = restaBinyBin(arregloa, arreglob); System.out.print("Resultado: \t"); for(int i = 0; i < resultado.length; i++) { System.out.print(resultado[i]);//se imprime la el resultado de la suma binaria } int resul = valor1 - valor2; System.out.print("\t\t" + resul);//se imprime la suma de los valores decimales System.out.println(); } public static int [] decimaltobinari(int valor){ //variables String binariores, res=""; int residuo; int x = 0; binariores = Integer.toBinaryString(valor); int arreglo [] = new int[15]; while (valor > 0) {

residuo = valor % 2;//obtener el residuo valor = valor / 2;//realizar la siguiente division //En el orden natural de la operacion los valores estan invertidos //por eso aqui los volvemos a invertir :) res = residuo + res; x++; } for(int i = arreglo.length -1, j=0, k=0; i > -1; i--, j++){ if(i >= res.length()){ arreglo[j] = 0;//llenamos los lugares vacios con ceros } else{ arreglo[j] = Integer.parseInt(res.charAt(k)+ "");//cuando llegemos al primer uno guradamos la conversion a binarios k++; } } return arreglo;// se regresa el arreglo } public static int[] restaBinyBin(int a[], int b[]) { int acarreo = 0;//variable de control. int[] c = new int[15];//Arreglo a retornar. //Se recorre el arreglo a de manera inversa. for (int i = c.length -1 ; i > 0; i--) { int resta = a[i] - b[i]; //Se realiza la resta una vez por ciclo if(resta == -1) {//Si la resta da -1 los elementos en el arreglo son 0 y 1. c[i] = 1;//Por lo tanto debe ir como resultado un 1 acarreo = 1;//Y se lleva un acarreo } //Si por el contrario la resta es 0 quiere decir que los elementos //eran 1 y 1 || 0 y 0. else if(resta == 0) { c[i] = 0;//Entonces debe ir 0 como resultado } //Si por el contrario la suma es 1, entonces los elementos //eran 1 y 0. else if(resta == 1) { c[i] = 1;//Y debe ir como resultado un 1. } if(acarreo == 1) {//Si existe un acarreo en este ciclo //Se comprueba si la resta del elemento siguiente del //arreglo "a" mas el acarreo es igual a 0. if(a[i-1] - 1 == 0) { a[i-1] = 0;//Si lo es, se asigna un 0 a "a". acarreo = 0;//Y el acarreo desaparece.

} } } return c;//Se regresa el arreglo. } }

SUMA
/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package calculadora_binaria3; /** * * @author JESUS */ public class SumaBinario { public void operacionsum (int valor1, int valor2){ int [] arregloa = decimaltobinari(valor1); int [] arreglob = decimaltobinari(valor2); System.out.print("Valor 1: \t");//se imprime el el primer valor convertido a bianrio for (int binario : arregloa) { System.out.print(binario); } System.out.print("\t\t" + valor1);//se imprimer el valor 1 en decimal System.out.println(); System.out.print("Valor 2: \t");//se imprime el el segundo valor convertido a bianrio for (int binario : arreglob) { System.out.print(binario); } System.out.print("\t\t" + valor2);//se imprimer el valor 2 en decimal System.out.println("\n--------------------------------------------"); int [] resultado = sumaBinyBin(arregloa, arreglob); System.out.print("Resultado: \t"); for(int i = 0; i < resultado.length; i++) { System.out.print(resultado[i]);//se imprime la el resultado de la suma binaria } int resul = valor1 + valor2; System.out.print("\t\t" + resul);//se imprime la suma de los valores decimales System.out.println(); } public static int [] decimaltobinari(int valor){ //variables String binariores, res=""; int residuo; int x = 0; binariores = Integer.toBinaryString(valor);

int arreglo [] = new int[15]; while (valor > 0) { residuo = valor % 2;//obtener el residuo valor = valor / 2;//realizar la siguiente division //En el orden natural de la operacion los valores estan invertidos //por eso aqui los volvemos a invertir :) res = residuo + res; x++; } for(int i = arreglo.length -1, j=0, k=0; i > -1; i--, j++){ if(i >= res.length()){ arreglo[j] = 0;//llenamos los lugares vacios con ceros } else{ arreglo[j] = Integer.parseInt(res.charAt(k)+ "");//cuando llegemos al primer uno guradamos la conversion a binarios k++; } } return arreglo;// se regresa el arreglo } public static int[] sumaBinyBin(int a[], int b[]) { int acarreo = 0;//variable de control. int[] c = new int[15];//Arreglo a retornar. //Se recorre el arreglo a de manera inversa. for (int i = c.length -1 ; i > 0; i--) { int suma = a[i] + b[i]; //Se realiza la suma una vez por ciclo if(suma == 2) {//Si la suma da 2 los elementos en el arreglo son 1 y 1. c[i] = 0;//Por lo tanto debe ir como resultado un 0 acarreo = 1;//Y se lleva un acarreo } //Si por el contrario la suma es 0 quiere decir que los elementos //eran 0 y 0. else if(suma == 0) { c[i] = 0;//Entonces debe ir 0 como resultado } //Si por el contrario la suma es 1, entonces los elementos //eran 0 y 1 o viceversa. else if(suma == 1) { c[i] = 1;//Y debe ir como resultado un 1. } if(acarreo == 1) {//Si existe un acarreo en este ciclo //Se comprueba si la suma del elemento siguiente del //arreglo "a" mas el acarreo es igual a 2. if(a[i-1] + 1 == 2) {

a[i-1] = 0;//Si lo es, se asigna un 0 a "a". acarreo = 1;//Y se sigue llevando un acarreo. } else {//Si la suma no da 2, solo puede dar 1. a[i-1] = 1;//Y entonces se asigna 1 a "a". acarreo = 0;//Y el acarreo desaparece. } } } return c;//Se regresa el arreglo. } }

Potrebbero piacerti anche