Calculadora Binaria en Java
Enviado por Samuel León • 21 de Noviembre de 2021 • Tarea • 2.276 Palabras (10 Páginas) • 946 Visitas
SISTEMAS DE INFORMÁTICA[pic 1]
[pic 2][pic 3]
[pic 4]
CONTENIDO
Explicación del programa en Java Calculadora Binaria. 2
Código de la Calculadora Binaria 2
BIBLIOGRAFÍA: 15
Explicación del programa en Java Calculadora Binaria.
Código de la Calculadora Binaria
Datos del programador
/*
* Tarea de estructura de computadoras.
* Calculadora Binaria de 12 bits
* Fecha límite de entrega 15 de Noviembre del 2021
*/
/**
*@author Samuel Jesús León Osuna
* Matrícula 144100
* Grupo K091
*/
Importación de librerías y método main
import java.util.Scanner;
public class CalculadoraBinaria {
public static void main(String[] args) {
char opcion;
Scanner entrada = new Scanner(System.in);
Menú para seleccionar la operación que se desea realizar por medio de un Sitch Case
do{
System.out.println("\n\nMENÚ: ELIGE UNA OPCIÓN");
System.out.println("1.- SUMA");
System.out.println("2.- RESTA");
System.out.println("3.- AND");
System.out.println("4.- OR");
System.out.println("5.- NOT");
System.out.println("S.- SALIR");
opcion = entrada.nextLine().charAt(0);
switch(opcion){
case '1':
suma();
break;
case '2':
resta();
break;
case '3':
and();
break;
case '4':
or();
break;
case '5':
not();
break;
case 'S': case 's':
break;
default:
System.out.println("La opción "+opcion+" no es valida, intentalo de nuevo");
}
}while(opcion != 'S' && opcion != 's');
}
Creación de objeto el cual se van a solicitar las variables con el usuario que se utilizan en cada caso del Sitch Case, se opto por hacerlo por separado para disminuir el número de líneas de código.
public static String[] pedirNumeros(){
Scanner entrada = new Scanner(System.in);
String[] numeros = new String[2];
System.out.println("\nRECUERDA QUE LOS NÚMEROS BINARIOS SOLO PUEDEN CONTENER");
System.out.println("0 y 1 Y PUEDEN ESTAR CONSTITUIDOS DE HASTA 12 DIGITOS");
System.out.println("\nDEME EL PRIMER NÚMERO ENTERO BINARIO DE HASTA 12 BITS");
numeros[0] = entrada.nextLine();
System.out.println("\nESCRIBA EL SEGUNDO NÚMERO ENTERO BINARIO DE HASTA 12 BITS");
numeros[1] = entrada.nextLine();
Es esta línea delimitamos que los caracteres que nos de el usuario solo tenga “0” o “1” y con esto confirmar que es un número binario.
if(!numeros[0].matches("^[01]+$") || !numeros[1].matches("^[01]+$")){
System.out.println("Alguno de los valores no es correcto.");
return null;
}
numeros[0] = forzar12Caracteres(numeros[0]);
numeros[1] = forzar12Caracteres(numeros[1]);
return numeros;
}
Esta línea es la que se utiliza para pedir el número que se va a comparar en NOT,
public static String pedirNumero(){
Scanner entrada = new Scanner(System.in);
String numero;
System.out.println("\nRECUERDA QUE LOS NÚMEROS BINARIOS SOLO PUEDEN CONTENER");
System.out.println("0 y 1 Y PUEDEN ESTAR CONSTITUIDOS DE HASTA 12 DIGITOS");
System.out.println("\nDEME EL NÚMERO ENTERO BINARIO DE HASTA 12 BITS");
numero = entrada.nextLine();
if(!numero.matches("^[01]+$")){
System.out.println("Alguno de los valores no es correcto.");
return null;
}
numero = forzar12Caracteres(numero);
return numero;
}
En este objeto forzamos que sean dígitos a 12 bits, ni más ni menos, en caso de que el valor dado sea menor de 12 bits rellenará a la izquierda con ceros para completar la cadena a 12 bits y en caso de que den más de 12 dígitos eliminara los valores dados después del valor 12.
public static String forzar12Caracteres(String numero){
String numeroFinal;
if(numero.length() < 12){
numeroFinal="";
int cantidadDeCeros = 12-numero.length();
for(int i=0;i<cantidadDeCeros; i++){
numeroFinal = numeroFinal.concat("0");
}
numeroFinal = numeroFinal.concat(numero);
} else if(numero.length()>12){
numeroFinal = numero.substring(numero.length()-12);
} else {
numeroFinal = numero;
}
return numeroFinal;
}
En este objeto marcamos el proceso para realizar las sumas binarias, se optó por usar cadenas de caracteres para poder rellenar los valores que no sean 12 bits.
public static char[] sumaBinaria(char a, char b, char acumulado){
char[] res = new char[2];
if (acumulado=='0'){
if(a == '0' && b == '0'){
res[0] = '0';
res[1] = '0';
}else if((a == '0' && b == '1') || (a == '1' && b == '0')){
res[0] = '1';
res[1] = '0';
}else if(a == '1' && b == '1'){
res[0] = '0';
res[1] = '1';
}
}else{
if(a == '0' && b == '0'){
res[0] = '1';
...