domingo, 22 de febrero de 2009

JUGAR CON IEEE 754

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