function ex01()
% Lösung von Aufgabe 1
x1 = 0.03125;
x2 = 10000;
x3 = 0.2;

% Teil b
x2hex = dec2hex(10000)
x3hex = dec2hex(round(x3*2^52))

digits(40)
q = vpa("1/16");
s1 = sum(q.^(1:12));
fl3 = (1 + 9*s1 + 10*q^13)/8

% Teil c
% Ausgabe als Hex-Zahlen liefert die Binärdarstellung
% daraus lassen sich E und M jeweils ablesen, werden aber i.f. auch
% berechnet
fprintf("x1 in Hex: %bx\n", x1);
fprintf("x2 in Hex: %bx\n", x2);
fprintf("x3 in Hex: %bx\n", x3);

format long
[E1, M1] = getFloatParts(x1);
[E2, M2] = getFloatParts(x2);
[E3, M3] = getFloatParts(x3);

fprintf("E1: %d = %s_16, M1: %s\n", E1, dec2hex(E1), dec2hex(M1));
fprintf("E2: %d = %s_16, M2: %s\n", E2, dec2hex(E2), dec2hex(M2));
fprintf("E3: %d = %s_16, M3: %s\n", E3, dec2hex(E3), dec2hex(M3));

%----------------------------------------------------------
function [E, M] = getFloatParts(x)
% gibt Exponent und Mantisse der IEEE-Darstellung von x (als ganze Zahlen)
[f,e] = log2(x);
E = 1023 + e - 1;
M = pow2(2*f-1,52);
