Come l'hai fatto tu può capitare (a seconda dei valori) che non coincida. E questo perché non hai tenuto conto del "borrow" (prestito).Originariamente inviato da Leon@@rdo
Successivamente dopo aver effettuato un'operazione sugli short (per esempio una sottrazione del tipo.. risultH (short)= short1H-short2H ; risultL (short) = short1L-short2L. NB dove short1H e short1L sono rispettivamente la parte più significativa e quella meno significativa del primo intero.) vorrei ricostruire un intero nel seguente modo:
risultato (intero)= (risultH+risultL). Soprattutto vorrei che il risultato coincidesse con quello della sottrazione effettuata direttamente sugli interi in input.
Quindi non si tratta di programmazione Java o in un altro linguaggio .... ma dell'aritmetica in base 2!!! Cioè cose mooooooolto più basilari!
Facciamo l'esempio su 8 bit (per fare le cose semplici) di due numeri: -90 e +56
-90 in binario 10100110 (il bit 7 è il segno, 1=negativo)
+56 in binario 00111000
Spezziamo i numeri in 2 parti ovvero 4 + 4 bit. Facciamo la sottrazione parte per parte
Sottrazione tra le parti basse: 0110 - 1000
Che succede? Che c'è un 0 - 1 (i bit più alti) e questo vuol dire che deve "chiedere in prestito" un 1 dalla parte più alta.
Quindi si fa 10110 - 1000 e viene 1110
Alla parte alta ora devi sottrarre un 1 (ovvio ... l'hai prestato).
Quindi 1010 - 1 = 1001
Sottrazione tra le parti alte: 1001 - 0011 = 0110
Il valore finale è 01101110
E -90 - 56 fa -146, cioè in hex 6E su 8 bit.
Banale "aritmetica" .....

