Advertisement
Garro

Computer Arithmetic - Sum

Oct 2nd, 2018
201
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.41 KB | None | 0 0
  1. import java.util.*;
  2. public class SumaAssembly{  
  3.     public static void main (String args[]) {
  4.         Scanner input = new Scanner(System.in);
  5.         System.out.print("Ingrese un numero: ");
  6.         int var_A = input.nextInt();
  7.         System.out.print("Ingrese un numero a sumar con " + var_A + ": ");
  8.         int var_B = input.nextInt();
  9.  
  10.         String bin_A = Integer.toBinaryString(var_A);
  11.         String bin_B = Integer.toBinaryString(var_B);
  12.         String bin_Result = "";
  13.  
  14.         //Normaliza el largo de ambos binarios.
  15.         while (bin_A.length() > bin_B.length()){
  16.             bin_B = "0" + bin_B;
  17.         }
  18.         while (bin_A.length() < bin_B.length()){
  19.             bin_A = "0" + bin_A;
  20.         }
  21.         bin_A = "0" + bin_A;
  22.         bin_B = "0" + bin_B;
  23.  
  24.         //Largo de los binarios.
  25.         int binary_length = bin_A.length();
  26.  
  27.         System.out.println("Los numeros ingresados son en binario " + bin_A + " y " + bin_B + " respectivamente.");
  28.         System.out.println("Calculando su suma...");
  29.  
  30.         boolean bol_A;
  31.         boolean bol_B;
  32.         boolean bol_C = false;
  33.         boolean bol_S;
  34.         for(int i = binary_length -1; i >= 0; i--){
  35.             //Obtiene el valor del String en la posicion i.
  36.             bol_A = charToBool(bin_A.charAt(i));
  37.             bol_B = charToBool(bin_B.charAt(i));
  38.  
  39.             //Calcula S y C.
  40.             bol_S = calculate_S(bol_A, bol_B, bol_C);
  41.             bol_C = calculate_C(bol_A, bol_B, bol_C);
  42.  
  43.             //System.out.println("A: " + boolToChar(bol_A) + " B: " + boolToChar(bol_B) + " S: " + boolToChar(bol_S) + " C: " + boolToChar(bol_C));
  44.  
  45.             //Agrega el resultado S al String que almacena el resultado.
  46.             bin_Result = boolToChar(bol_S) + bin_Result;
  47.         }
  48.  
  49.         //Convierte el binario en String a decimal.
  50.         int var_Result = Integer.parseInt(bin_Result, 2);
  51.         System.out.println("EL resultado en binario es " + bin_Result + " lo cual corresponde al numero " + var_Result + ".");
  52.     }
  53.  
  54.  
  55.     public static boolean calculate_S(boolean bi_A, boolean bi_B, boolean bi_Ci){
  56.         boolean result;
  57.  
  58.         result = bi_A ^ bi_B;
  59.         result = result ^ bi_Ci;
  60.  
  61.         return result;
  62.     }
  63.  
  64.     public static boolean calculate_C(boolean bi_A, boolean bi_B, boolean bi_Ci){
  65.         boolean xor_result;
  66.         boolean result;
  67.  
  68.         xor_result = bi_A ^ bi_B;
  69.         xor_result = !(xor_result && bi_Ci);
  70.         result = !(bi_A && bi_B);
  71.         result = !(xor_result && result);
  72.  
  73.         return result;
  74.     }
  75.  
  76.     public static boolean charToBool(char input){
  77.         if (input == '0'){
  78.             return false;
  79.         }
  80.         return true;
  81.     }
  82.  
  83.     public static char boolToChar(boolean input){
  84.         if(input){
  85.             return '1';
  86.         }
  87.         return '0';
  88.     }
  89. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement