Está en la página 1de 3

/*

Titulo:Suma de numeros binarios


Autor:

| Digitos | sA | cA |
| 0 | 0 | 0 | 1 |
| 1 | 0 | 1 | 0 |
| 0 | 1 | 1 | 0 |
| 1 | 1 | 0 | 1 |
*/
package sumabinarios;

import java.util.Scanner;

class Metodo {

public String rellenar(String Bn, int cnt) {


String relleno = "";
for (int i = 1; i <= cnt; i++) {
relleno = relleno + "0";
}
relleno = relleno + Bn;
return relleno;
}
}

public class SumaBinarios {

public static boolean Binario(String binario) {


return binario.matches("[0-1]+");
}

public static void main(String[] args) {


Scanner sc = new Scanner(System.in);
Metodo mt = new Metodo();
boolean acarreo = false;
boolean patron = false;
String Bn1 = "";
String Bn2 = "";
String resultado = "";
System.out.println("Suma de numeros binarios");
while (patron == false) {
Bn1 = sc.nextLine();
Bn2 = sc.nextLine();
if (!SumaBinarios.Binario(Bn1) && !SumaBinarios.Binario(Bn2)) {
System.out.println("solo numeros binarios");
patron = false;
} else {
if (!SumaBinarios.Binario(Bn1) || !SumaBinarios.Binario(Bn2)) {
System.out.println("solo numeros binarios");
patron = false;
} else {
patron = true;
}
}
}
int cuadrar = (Bn1.length()) - (Bn2.length());
if (cuadrar < 0) {
Bn1 = mt.rellenar(Bn1, (cuadrar * (-1)));
}
if (cuadrar > 0) {
Bn2 = mt.rellenar(Bn2, cuadrar);
}

//for que recorre una cadena de derecha a izquierda


for (int i = Bn1.length() - 1; i >= 0; i--) {
/*
Evaluacion del caso
| Digitos | sA | cA |
| 0 | 0 | 0 | 1 |
*/
if (Bn1.charAt(i) == '0' && Bn2.charAt(i) == '0') {
if (acarreo == false) {
resultado = "0" + resultado;
acarreo = false;
}
if (acarreo == true) {
resultado = "1" + resultado;
acarreo = false;
}
}
/*
Evaluacion del caso
| Digitos | sA | cA |
| 1 | 0 | 1 | 0 |
*/
if (Bn1.charAt(i) == '1' && Bn2.charAt(i) == '0') {
if (acarreo == false) {
resultado = "1" + resultado;
acarreo = false;
}
if (acarreo == true) {
resultado = "0" + resultado;
acarreo = true;
}
}
/*
Evaluacion del caso
| Digitos | sA | cA |
| 0 | 1 | 1 | 0 |
*/
if (Bn1.charAt(i) == '0' && Bn2.charAt(i) == '1') {
if (acarreo == false) {
resultado = "1" + resultado;
acarreo = false;
}
if (acarreo == true) {
resultado = "0" + resultado;
acarreo = true;
}
}
/*
Evaluacion del caso
| Digitos | sA | cA |
| 1 | 1 | 0 | 1 |
*/
if (Bn1.charAt(i) == '1' && Bn2.charAt(i) == '1') {
if (acarreo == true) {
resultado = "1" + resultado;
acarreo = true;
}
if (acarreo == false) {
resultado = "0" + resultado;
acarreo = true;
}
}
}
//En el caso de existir un acarreo fuera de la comparacion
//que excede la longitud de los arreglos, se le agrega el
//digito
if (acarreo == true) {
resultado = "1" + resultado;
System.out.println("");
System.out.println(" " + Bn1);
System.out.println(" " + Bn2);
for (int i = 0; i <= Bn1.length(); i++) {
System.out.print("-");
}
} else {
System.out.println("");
System.out.println(Bn1);
System.out.println(Bn2);
for (int i = 0; i < Bn1.length(); i++) {
System.out.print("-");
}
}

System.out.println();
System.out.println(resultado);
}
}

También podría gustarte