CARRERA PROFESIONAL DE INGENIERIA ELECTRICA OPERACIONES EN BINARIO ALUMNO : JOHN MILLOBAN PANCORBO CARPIO CODIGO : 083021-B DOCENTE : MS.c. ING. EDGAR Z. ALARCÓN VALDIVIA CURSO : SISTEMAS DIGITALES I SEMESTRE 2018-II 1.- Hacer un programa que al ingresar un numero en cualquier base, convierta este mismo número a otra base. Código en java: import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Conversion { BufferedReader in=new BufferedReader(new InputStreamReader(System.in)); void menu()throws IOException { while(true) { System.out.println("\nMENU"); System.out.println("1.-DECIMAL => BINARIO"); System.out.println("2.-DECIMAL => HEXADECIMAL"); System.out.println("3.-DECIMAL => OCTAL\n"); System.out.println("4.-BINARIO => DECIMAL"); System.out.println("5.-BINARIO => HEXADECIMAL"); System.out.println("6.-BINARIO => OCTAL\n"); System.out.println("7.-HEXADECIMAL => DECIMAL"); System.out.println("8.-HEXADECIMAL => BINARIO"); System.out.println("9.-HEXADECIMAL => OCTAL\n"); System.out.println("10.-OCTAL System.out.println("11.-OCTAL System.out.println("12.-OCTAL System.out.print("13.-SALIR\n => DECIMAL"); => BINARIO"); => HEXADECIMAL\n"); OPCION: "); int opc=Integer.parseInt(in.readLine()); String valor; System.out.print("\n"); switch(opc) { case 1: System.out.println("\n\nDECIMAL => BINARIO"); System.out.print("DECIMAL= "); valor=in.readLine(); dec_bin(valor); break; case 2: System.out.println("\n\nDECIMAL => HEXADECIMAL"); System.out.print("DECIMAL= "); valor=in.readLine(); dec_hex(valor); break; case 3: System.out.println("\n\nDECIMAL => OCTAL"); System.out.print("DECIMAL= "); valor=in.readLine(); dec_oct(valor); break; case 4: System.out.println("\n\nBINARIO => DECIMAL"); System.out.print("nBINARIO= "); valor=in.readLine(); bin_dec(valor); break; case 5: System.out.println("\n\nBINARIO => HEXADECIMAL"); System.out.print("nBINARIO= "); valor=in.readLine(); bin_hex(valor); break; case 6: System.out.println("\n\nBINARIO => OCTAL"); System.out.print("nBINARIO= "); valor=in.readLine(); bin_oct(valor); break; case 7: System.out.println("\n\nHEXADECIMAL => DECIMAL"); System.out.print("nHEXADECIMAL= "); valor=in.readLine(); hex_dec(valor); break; case 8: System.out.println("\n\nHEXADECIMAL => DECIMAL"); System.out.print("nHEXADECIMAL= "); valor=in.readLine(); hex_bin(valor); break; case 9: System.out.println("\n\nHEXADECIMAL => OCTAL"); System.out.print("HEXADECIMAL= "); valor=in.readLine(); hex_oct(valor); break; case 10: System.out.println("\n\nOCTAL => DECIMAL"); System.out.print("OCTAL= "); valor=in.readLine(); oct_dec(valor); break; case 11: System.out.println("\n\nOCTAL => BINARIO"); System.out.print("OCTAL= "); valor=in.readLine(); oct_bin(valor); break; case 12: System.out.println("\n\nOCTAL => HEXADECIMAL"); System.out.print("OCTAL= "); valor=in.readLine(); oct_hex(valor); break; case 13: System.exit(0); break; } } } void dec_bin(String valor) { int dec=Integer.parseInt(valor); valor=Integer.toBinaryString(dec); System.out.print("BINARIO: "+valor); } void dec_hex(String valor) { int dec=Integer.parseInt(valor); valor=Integer.toHexString(dec); System.out.print("HEXADECIMAL: "+valor); } void dec_oct(String valor) { int dec=Integer.parseInt(valor); valor=Integer.toOctalString(dec); System.out.print("OCTAL: "+valor); } void bin_dec(String valor) { int dec=Integer.parseInt(valor,2); System.out.print("DECIMAL: "+dec); } void bin_hex(String valor) { int dec=Integer.parseInt(valor,2); valor=Integer.toHexString(dec); System.out.print("HEXADECIMAL: "+valor); } void bin_oct(String valor) { int dec=Integer.parseInt(valor,2); valor=Integer.toOctalString(dec); System.out.print("OCTAL: "+valor); } void hex_dec(String valor) { int dec=Integer.parseInt(valor,16); System.out.print("DECIMAL: "+dec); } void hex_bin(String valor) { int dec=Integer.parseInt(valor,16); valor=Integer.toBinaryString(dec); System.out.print("BINARIO: "+valor); } void hex_oct(String valor) { int dec=Integer.parseInt(valor,16); valor=Integer.toOctalString(dec); System.out.print("OCTAL: "+valor); } void oct_dec(String valor) { int dec=Integer.parseInt(valor,8); System.out.print("DECIMAL: "+dec); } void oct_bin(String valor) { int dec=Integer.parseInt(valor,8); valor=Integer.toBinaryString(dec); System.out.print("BINARIO: "+valor); } void oct_hex(String valor) { int dec=Integer.parseInt(valor,8); valor=Integer.toHexString(dec); System.out.print("HEXADECIMAL: "+valor); } public static void main(String [] args) throws IOException { Conversion conversion=new Conversion(); conversion.menu(); } } 2. Realizar el análisis de la división binaria en el sistema de representación de complemento a 2 con el bit de signo El signo del cociente depende de los signos del dividendo y del divisor: • Signos son iguales → cociente es positivo • Signos son diferentes → cociente es negativo ++=+ +-=-+=--=+ • Cuando se dividen dos números, ambos deben estar en binario real (sin complementar). Procedimiento para la división binaria con signo: 1. Determinar los signos del dividendo (primer operando) y el divisor (segundo operando) son iguales o diferentes. Esto determinara el signo del cociente. Inicializar el cociente en cero. 2. Substraer el divisor del dividendo utilizando suma en complemento a 2 para obtener el primer residuo parcial y sumar 1 al cociente. Si el residuo parcial es positivo, ir al paso 3, si es cero o negativo, la división está completa. 3. Substraer el divisor del residuo parcial y añadir 1 al cociente. Si el resultado es positivo, repetir para el siguiente residuo parcial, si el resultado es cero o negativo, la división está completa. Ejemplo: Dividir el número con signo: 01100100 entre 00011001 (8 bits) 1. El signo de ambos números es positivo, por lo tanto, el cociente será positivo. El cociente es inicialmente 00000000. 2. Substraer el divisor del dividendo utilizando suma en complemento a 2. (Recuerde: Los carries finales se descartan) 01100100 + 11100111 01001011 Residuo parcial positivo Añadir 1 al cociente: 00000000 + 00000001 = 00000001 3. Substraer el divisor del primer residuo parcial utilizando suma en complemento a 2. + 01001011 11100111 00110010 Residuo parcial positivo Añadir 1 al cociente: 00000001 + 00000001 = 00000010 4. Substraer el divisor del segundo residuo parcial utilizando suma en complemento a 2. + 00110010 11100111 00011001 Residuo parcial positivo Añadir 1 al cociente: 00000010 + 00000001 = 00000011 4. Substraer el divisor del tercer residuo parcial utilizando suma en complemento a 2. + 00011001 11100111 00000000 Residuo cero Añadir 1 al cociente: 00000011 + 00000001 = 00000100 Cociente Final