Vous êtes sur la page 1sur 14

DEPARTAMENTO DE CIENCIAS DE ELECTRICA

Y ELECTRONICA

INGENIERA MECATRNICA

SISTEMAS DIGITALES
NRC: 2162

INFORME DE PROGRAMA COMPLEMENTO BASE, BASE -1

Ing. MIROSLAVA ZAPATA

Alumno:
Gustavo Chusin

29 de noviembre del 2016

Sangolqu, Pichincha, Ecuador

TEMA: Desarrollo de programas de Resta a complemento a la base

1.- Objetivos:

Desarrollar un programa que realice la operacin de resta


complemento a la base
Desarrollar un programa que realice la operacin de resta
complemento a la base -1.
Aplicar los conocimientos adquiridos en el aula y comprobar mediante
el software.

2.- Marco Conceptual:


El complemento de base
El complemento de base
-1
Resta complemento

Resta con
complemento a la
base

Resta con
complemento a la
base menos 1

Paso a seguir
1 Minuendo y
sustraendo (M, N)

1 Minuendo y
sustraendo (M, N)

2 Igualamos
cifras

2 Igualamos
cifras

3. Complemento
de N

3. Complemento
de N

4. Determino si
existe o no el
3.- Desarrollo:
acarreo.

4. Determino si
existe o no el
acarreo.

Para la realizacin de los programas se sigui la siguiente secuencia.


Ingreso de datos por el
usuario
Datos

Base
Minuendo
Sustraendo

Determino los
complementos

Determino el
complemento

Validacin de las
nmeros ingresado
para saber base
realizar la operacin

Iguala las cifras

Determino si
existe el acarreo
o no

Si los datos ingresado


son de base superior a
10 transforma a tipo
numrico

Almaceno en forma
de vectores de
minuendo y
sustraendo

Transformo el
tipo numrico a
string si es de
base superior a
10

Realizamos el programa siguiendo el paso


En la ilustracin 1. Se puede ver el Ingreso de datos como la base, el
minuendo y el sustraendo el usuario por teclado.

Ilustracin 1. Ingreso de datos


Estos datos son almacenados en forma de vector en un programa aislado
que posteriormente son validados y el dato validado se archiva en una
funcin de validar datos que cuando ejecute del programa principal ser
llamado esta funcin y que realice la operacin deseada.

Ilustracin 2 Funcin para validar los datos

Ilustracin 3. Programa para validar los datos

En la ilustracin 3.Tenemos un programa que realiza la validacin de los


datos ingresados esto funciona de la siguiente manera En mi caso la funcin
que he llamado es FuncionValidacion(cadena, base), esta funcin recibe los
datos ingresado por el usuario almacena en forma de vector, e inicia
busquejo de los datos de tipo string compara y compara si encuentra hace
su respectivo cambio a tipo numrico. Por ejemplo los datos son tipo string
desde la base 10 hasta base 19

Ilustracin 4. Programa para validar los datos


En ilustracin 4, en este parte de lo que se hizo fue determinar los tamaos
de los vectores que sern igualados las cifras.

Ilustracin 5. Igualacin de cifras del minuendo y sustraendo


Siguiendo el paso para resolver en la ilustracin 5, se hizo la operacin de
comparacin de los vectores minuendo y sustraendo para ver si es
necesario realizar la igualacin de la cifra.

Ilustracin 6. Operacin de resta


En la ilustracin 6 se puede observar la parte que realiza la operacin resta
esto se realiza cuando las cifras ya son igualados y determinado el
complemento a la base,

Ilustracin 7. Sacamos el complemento del vector r^n-N


En ilustracin 7 se realiz el complemento a la base C(r)N.

Ilustracin 8. La operacin de conversin


En la ilustracin 8 se puede ver que despus de realizar la operacin el
resultado se debe comparar si hay que transformar a tipo string o no
Para lo cual usamos la transformacin inversa

Ilustracin 9. La operacin de conversin


En la ilustracin 9 se hace una conversin a tipo string si es pasado de la
base 10, de la siguiente manera, cuando tenemos un 10 transforme a A, si
es 11 a C as sucesivamente hasta llegar a la base 19

El programa completo son las siguientes:


El programa que realiza la operacin resta a la base
% el programa que realiza la operacion resta a la base
clear all;
clc;
base = input ('Ingrese la base: ');% ingreso la base deseado
minuendo=input('Ingrese Minuendo: ','s');%ingreso los datos del Minuuindo
sustraendo=input('Ingrese Sustraedo: ','s'); %ingreso los datos de sustraendo

numero1=FuncionValidacion(minuendo,base)%almaceno en vector num1vector


Minuendo
d=FuncionValidacion(sustraendo,base)%vector Sustraendo
a=length(d);% termino la dimensin del minuendo, M
b=length(numero1);%determino la dimensin del sustraendo, N
%igualamos los cifras de M y N
if a ~= b %Condicional para determinar si es necesario igualar
if a>b % si a>b se ejecuta los siguientes comandos.
j=0;
for i=a:-1:a-b+1
numero1(i)=numero1(b-j);
j=j+1;
end
for i=a-b:-1:1
numero1(i)=0;
end
end
if b>a
j=0;
for i=b:-1:b-a+1
d(i)=d(a-j);
j=j+1;
end
for i=b-a:-1:1
d(i)=0;
end
end
end
r(1)=1;
for i=2:length(d)+1% vector r^n
r(i)=0;% el r tendr un elemento ms que N
end
llevando=0;
for i=length(r):-1:2% en esta parte se realiza la resta de r^n-N
d(i-1)=d(i-1)+llevando;
if r(i) >= d(i-1)
R(i-1)=r(i)-d(i-1);
llevando=0;
else
r(i)=r(i)+base;
R(i-1)=r(i)-d(i-1);
llevando=1;
end
end
r(1)=r(1)-llevando;
llevando=0;
if r(1)==0
for i=length(R):-1:1
diferencia(i)=R(i)+numero1(i)+llevando;
if diferencia(i) >= base% cuando el nmero resultado de la suma es
mayor o igual que la base
llevando=fix(diferencia(i)/base);%residuo de la divisin por la
base
diferencia(i)=rem(diferencia(i),base);
else llevando=0;
end
end

end
if llevando == 0 %Saca el complemento de 'diferencia' en el caso de no existir
acarreo
r(1)=1;
for i=2:length(diferencia)+1% vecto r^n
r(i)=0;%r tendr un elemento ms que N
end
for i=length(r):-1:2% realiza la resta de (r^n-N)
diferencia(i-1)=diferencia(i-1)+llevando;
if r(i) >= diferencia(i-1)
R(i-1)=r(i)-diferencia(i-1);
llevando=0;
else
r(i)=r(i)+base;
R(i-1)=r(i)-diferencia(i-1);
llevando=1;
end
end
diferencia=R;
llevando=0;
end
diferencia1=Funvalidacion(diferencia);
if llevando==0
[p,r]=size(diferencia1);
for i=r:-1:1
diferencia1(1,i+1)=diferencia1(1,i);
end
diferencia1(1,1)='-';
end
diferencia1
Resta con Complemento a la

base -1

%El programa que realiza pa operacion de resta Base menos 1


clear all;
clc;
base = input ('Ingrese la base: ');
min=input('Ingrese el minuendo: ','s');%Ingreso del Minuendo
sus=input('Ingrese el sustranedo: ','s');%Ingreso del Sustreando
numero1=validacion(min,base)%vector Minuendo
d=validacion(sus,base)%vector Sustraendo
a=length(d);%Determina la dimensin del minuendo, N
b=length(numero1);%Dtermina la dimensin del sustraendo, M
%igualando M y N
if a ~= b % Validacion para determinar si debe igualar
if a>b
j=0;
for i=a:-1:a-b+1
numero1(i)=numero1(b-j);
j=j+1;
end
for i=a-b:-1:1
numero1(i)=0;

end
end
if b>a
j=0;
for i=b:-1:b-a+1
d(i)=d(a-j);
j=j+1;
end
for i=b-a:-1:1
d(i)=0;
end
end
end
r(1)=1;
for i=2:length(d)+1% vecto r^n
r(i)=0;%r tendr un elemento ms que N
end
%Resta
llevando=0;
m=0;
for i=length(r):-1:2%resta de r^n-r^m-N
d(i-1)=d(i-1)+llevando;
if r(i) >= d(i-1)
R(i-1)=r(i)-d(i-1);
llevando=0;
else
r(i)=r(i)+base;
R(i-1)=r(i)-d(i-1);
llevando=1;
end
end
r(1)=r(1)-llevando;
llevando=0;
if r(1)==0
for i=length(R):-1:1
diferencia(i)=R(i)+numero1(i)+llevando;
if diferencia(i) >= base%cuando el nmero resultado de la suma es
mayor o igual que la base
llevando=fix(diferencia(i)/base);%residuo de la divisin por la
base
diferencia(i)=rem(diferencia(i),base);
else llevando=0;
end
end
end
if llevando == 0 %Sacar complemento de 'diferencia' en el caso de no existir
acarreo
r(1)=1;
for i=2:length(diferencia)+1% vecto r^n
r(i)=0;%r tendr un elemento ms que N
end
for i=length(r):-1:2%resta de r^n-N
diferencia(i-1)=diferencia(i-1)+llevando;
if r(i) >= diferencia(i-1)
R(i-1)=r(i)-diferencia(i-1);
llevando=0;
else

r(i)=r(i)+base;
R(i-1)=r(i)-diferencia(i-1);
llevando=1;

end
end
diferencia=R;
llevando=0;

end
diferencia1=Funvalidacion(diferencia);
if llevando==0
[p,r]=size(diferencia1);
for i=r:-1:1
diferencia1(1,i+1)=diferencia1(1,i);
end
diferencia1(1,1)='-';
end
diferencia1

Ejecucin del programa.

Ilustracin 10. El resultado de la operacin

Ilustracin 11. El resultado de la operacin


En la ilustracin de 10 y 11. En ejecucin del programa se prob con base 7
y base 13 de diferentes formas que puede realizar la operacin.

4.- Dificultades.

En el diseo de una estructura o secuencia lgica de debe seguir para la


realizacin de la resta con complemento cuando la base es superior a 10 en
un lenguaje de programacin.

5.- Soluciones.
Para solucin del problema lo que se hizo fue que cuando ingresa el usuario
guardar los datos en forma de vector y hacer una validacin de cada uno de
los elementos del vector comparando si es de tipo string o no, si existe hice
una transformacin a tipo numrico para poder realizar la operacin que
despus el resultado volver a transformar a tipo string e imprimir en base
que corresponda.

6.- Conclusiones.

Para la realizacin del programa tuve que entender el funcionamiento


de los vectores y la secuencia que debe seguir para la realizacin de la
resta con complemento.

7.- Recomendaciones.

Usar un lenguaje de programacin que esta mas familiarizado y hacer


por partes utilizando programas aislado del programa principal ya que
a travs de funciones se puede hacer ejecutar cuando sea necesario.

8.- Bibliografa.

Tocci J. Ronald. Sistemas Digitales Principios y Aplicaciones.


Quinta Edicion. 1993 Prentice Hall.

Floyd D. Fundamentos de Sistemas Digitales. Novena Edicion,


Madrid, Pearson.

Vous aimerez peut-être aussi