Subido por John Milloban Pancorbo Carpio

DIGITALES-PANCORBO-083021

Anuncio
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
Descargar