Buenas, ante todo comentar que publico este comentario también en mi blog dado que es cuestión de horas que Mamen se cambié el blog de la UA. Os paso un código en Matlab que convierte un número decimal a IEEE 754 (previa conversión decimal-hexadecimal-binario). Permite elegir entre precisión simple y doble. Así podremos hacernos mejor una idea.
Se compone de 2 funciones:
1º) Convierte el número de hexadecimal a binario
function x=h2b(y)
% Función que convierte de hexadecimal a binario
X = ['0000'; % 0
'0001'; % 1
'0010'; % 2
'0011'; % 3
'0100'; % 4
'0101'; % 5
'0110'; % 6
'0111'; % 7
'1000'; % 8
'1001'; % 9
'1010'; % a
'1011'; % b
'1100'; % c
'1101'; % d
'1110'; % e
'1111']; % f
x = X(sscanf(y,'%x')+1,:);
end
2º) Calcula el número IEEE 754
function x=dec_a_754(r,precision)
% Devuelve el número decimal de entrada r en formato IEE754
% La precisión puede ser 'simple' o 'doble'
% En primer lugar determinamos la precisión
if (strcmp(precision,'simple'))
y = sprintf('%tx',r);
elseif (strcmp(precision,'doble'))
y = sprintf('%bx',r);
% Si no es simple o doble --> error
else
error('La precisión puede ser ''simple'' o ''doble''\n');
end
y
x = '';
% Concatenamos cadenas
for i=1:length(y)
x = strcat(x,h2b(y(i)));
end
Trastear un rato las funciones de Matlab ayudan a hacerse una idea de las operaciones que se realizarían internamente en un DSP. Saludos. David.
No hay comentarios:
Publicar un comentario