Académique Documents
Professionnel Documents
Culture Documents
Y ELECTRONICA
INGENIERA MECATRNICA
SISTEMAS DIGITALES
NRC: 2162
Alumno:
Gustavo Chusin
1.- Objetivos:
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.
Base
Minuendo
Sustraendo
Determino los
complementos
Determino el
complemento
Validacin de las
nmeros ingresado
para saber base
realizar la operacin
Determino si
existe el acarreo
o no
Almaceno en forma
de vectores de
minuendo y
sustraendo
Transformo el
tipo numrico a
string si es de
base superior a
10
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
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
4.- Dificultades.
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.
7.- Recomendaciones.
8.- Bibliografa.