Está en la página 1de 3

NumDec=input('ingrese el numero decimal: ');

%convertir un numero decimal a un numero binario


%crear un arreglo que guardará los restos de las divisiones para luego
%concatenarlos de atras a adelante
arreglo=zeros(32);%esta funcion crea arreglo inicializado con ceros
%inicialmente con valor de 2 para no confundirlos con las cifras del binario
%resultante
for(i=1:32)
arreglo(i)=2;
end
%esta parte se realiza las divisiones sucesivas
i=1;
while(NumDec>1)
resto=rem(NumDec,2);
%guardar este resto en el arreglo
arreglo(i)=resto;
cociente=(NumDec-resto)/2;%esto hace que la division sea exacta
NumDec=cociente;
i=i+1;
end
%agregar al arreglo el ultimo cociente
arreglo(i)=1;
%asignar la primera columna de la matriz (el arreglo)
Aux=arreglo(:,1);
%el numero de cifras que se han insertado en el arreglo es i
%transformar essos elementos en un numero de atras para adelante
cifras=0;
for(j=0:i-1)
cifras=cifras+Aux(i-j)*10^(i-j-1);
end
%asignar a Numbinario y este valor restornará de la funcion
fprintf('El numero en binario es: ');
fprintf('%2d',cifras)
Cualquiera de las bases que tu dices las puedes pasar a decimal, pues existe una función para cada una que te lo pasa
a decimal. Estas son:
bin2dec(number);%convierte el numero en binario 'number' a base decimal;
hex2dec(number);%convierte el numero en base hexadecimal 'number' a base decimal;
oct2dec(number);%convierte el numero en base octal 'number' a base decimal;

En el momento en que tengas el número en decimal, lo puedes pasar a cualquiera de las otras bases que tu dices. Pues
existe una función:
dec2base(d, base);% convierte el entero no negativo 'd' a la base especificada 'base'.

Entonces, por ejemplo, para uno de tus casos: Convertir de hexadecimal a binario:
%El numero en base hexadecimal es numerohexadecimal.
% 1º Convierto el hexadecimal a decimal:

numerodecimal = hex2dec(numerohexadecimal);

%Cuando la tengo el numero en decimal lo paso a base 2(binario):

numerobinario=dec2bas(numerodecimal,2);
%Si quisiera pasarlo a base octal:
numerooctal=dec2base(numerodecimal,8);

Espero haberte sido de ayuda amigo.

clear all

bin=input('Ingrese el numero binario que desea convertir a decimal: ','s');

L=length(bin);

decimal=0;

for i=1:L

decimal=decimal +str2double(bin(i))*2^(L-i);

end

display(decimal)
binario_a_decimal

Ingrese el numero binario que desea convertir a decimal: 110101010111001110

decimal =

218574

También podría gustarte