Ti posto un esempio con numeri diversi (già pronto!!!).
Sommare in binario i numeri reali decimali $0,5_{10}$ e $-0,4375_{10}$.
Per prima cosa, occorre trasformare i due addendi in base due, naturalmente in notazione scientifica normalizzata. Ipotizziamo una precisione di quattro bit.
$-0,5_{10}=(1/2)_{10}=(1/(2^1))_{10}=0,1_2=0,1_2x2^0=1,000_2x2^(-1)$
$-0,4375_{10}=(-7/16)_{10}=-0,0111_2=-0.0111_2x2^0=-1,110_2x2^(-2)$
Algoritmo:
Fase 1: La mantissa dell'addendo con esponente minore ($-1,110_2x2^(-2)$) va fatta scorrere verso desra, finchè l'esponente dell'addendo relativo non diventi uguale a quello dell'altro addendo:
$-1,110_2x2^(-2)=-0,111_2x2^(-1)$
Fase 2: Somma delle mantisse:
$1,000_2x2^(-1)+(-0,111_2x2^(-1))=0,001_2x2^(-1)$
Fase 3: Normalizzazione del risultato della somma delle mantisse, controllando anche l'eventuale traboccamento, verso l'alto o verso il basso, dell'esponente:
$0,001_2x2^(-1)=0,010_2x2^(-2)=0,100_2x2^(-3)=1,000_2x2^(-4)$
Dato che $127>=-4>=-126$, non si verifica traboccamento (il campo esponente, che si intepreta in rappresentazione polarizzata, vale -4+127, cioè 123, valore che cade nell'intervallo tra 0 e 255, i due valori estremi per il campo esponente).
Fase 4: Arrotondamento del risultato della somma:
$1,000_2x2^(-4)$
Il risultato è già rappresentato con precisione di quattro bit, perciò non c'è alcun bisogno di arrotondare. Il risultato convertito in decimale è:
$1,000_2x2^(-4)=0,0001000_2=0,0001_2=(1/(2^4))_{10}=(1/16)_{10}=0,0625_{10}.
Questo è proprio il risultato della somma tra $0,5_{10}$ e $-0,4375_{10}$.
Che fatica!!!
"Una delle principali cause della caduta dell'Impero Romano fu che, privi dello zero, non avevano un modo per indicare la corretta terminazione dei loro programmi C." - Robert Firth