addizione e sottrazione
- Portiamo gli addendi alla stessa potenza della base (la maggiore). (allineamento degli operandi)
- Decidere l’operazione (tra somma e sottrazione) e l’ordine degli operandi.
- Decidere il segno del risultato
- Eseguire l’operazione
- Valutare il risultato e aggiustare la potenza portandola allo standard (normalizzazione)
Somma tra:
A = < 0; 10011; 1010011010 >
B = < 1; 10100; 0010110101 >
1. Portare allo stesso esponente
eA = 19
eB = 20
portiamo A ad esponente 20 e spostiamo a dx la mantissa di una posizione (1 implicito !!!)
A = 0 10100 0,1101001101
B = 1 10100 1,0010110101 (il primo uno è implicito)
2. Decidere l'operazione
A > 0
B < 0 -> sottrazione
3. Decidere il segno del risultato (ordine degli operandi)
|B|>|A| -> B - A
e il risultato avrà segno meno
4. Esecuzione della sottrazione
B 1,0010110101 (*2^20) -
A 0,1101001101 (*2^20) =
0,0101101000 (*2^20)
5. Normalizzazione
1,0110100000 (2^-2 * 2^20) = 1,0110100000 (*2^18)
6. Risultato
segno = - (1)
esponente = 18 (10010)
mantissa = 0110100000
<1;10010;0110100000> = 0xC9A0
Verifica:
A = 26,42
B = -37.68
A+B = -11.26
0xC9A0 = -11.25
Esempio:
A = <1;11101;1110100000>
B = <1;11110;1101100000>
eA = 29
eB = 30
Scorrimento di A di una posizione a destra
mantissa di A: 0,(1)11101
mantissa di B: (1),110110
somma = 10,110011*2^30 = 1,011011*2^31
2^31 = 11111
11111 è escluso perché è una sequenza speciale dell'esponente per indicare valori speciali
A = <1;00101;1101000000>
B = <1;10011;1010000000>
eA = 5
eB = 19
eB-eA = 14
la mantissa di A e il suo 1 implicito si perdono per lo scorrimento di 14 posizioni. Ciò succede per tutti gli spostamenti maggiori di 11.
moltiplicazione
- Moltiplica le mantisse degli operandi (1 implicito incluso)
- Somma tra gli esponenti
- Normalizzazione
- Determinare il segno del risultato
N.B.: gli esponenti si ottengono sommando il bias, ma quando sommo gli esponenti avrei 2 bias, quindi bisogna toglierne 1.
A = <0;10001;0101000000>
B = <1;10000;0110000000>
1. Moltiplicazione tra le mantisse (+1 implicito)
1,0101 * (4 cifre significative dopo la virgola)
1,0110 = (3 cifre significative dopo la virgola)
1 0101
-------------
10 101
101 01
0000 0
1 0101
-------------
1,1100 111 (4+3 = 7 cifre significative dopo la virgola)
2. Esponenti
eA+bias = 17 = 2+15
eB+bias = 16 = 1+15
eA+eB+bias = 2+1+15 = 18
3. Normalizzazione
la mantissa è già normalizzata
4. Segno
è meno
A * B = <1;100110;11001111000> = 0xCB38