Somma esadecimali

Messaggioda Nepenthe » 30/12/2010, 13:53

Salve a tutti, non so dove postare questo esercizio che non riesco a capire, inerente a Architettura dei calcolatori, quindi chiedo scusa in anticipo se ho postato in una sezione sbagliata. L'esercizio è il seguente:

Valutare la seguente somma tra interi relativi da 28 BIT, rappresentati in modulo e segno:

35ABD77 - A459C31

Dovrebbe riportare BA058A8 e non so come cavolo gli è uscito.
Le mie considerazioni sono: il primo numero è positivo, il secondo è negativo e maggiore in modulo del primo, in mezzo c'è un meno che dovrebbe cambiare il segno dell'operazione che diventerebbe una addizione. Anche riscrivendo il secondo numero con complemento a 16 non riporta... HELP!
Nepenthe
New Member
New Member
 
Messaggio: 41 di 61
Iscritto il: 03/01/2010, 14:41

Messaggioda hamming_burst » 30/12/2010, 16:10

ciao,

allora mi sembra che il tuo dubbio, risieda nel secondo numero.
Ti consiglio di fare così:

- converti i due numeri (35ABD77) e (A459C31) in base 2. Ricorda che gli esadecimali sono gruppi di numeri di 4 bit in base 2.
- adesso hai due strade o segui la logica dei numeri binari, o usi la proprietà dell'addizione.

Proprietà addizione:
Essendo che $-(-B) = +B$ quello che farai è fare una somma, cambiando il bit più significativo in positivo (essendo che sei in modulo e segno e in 28 Bit).

Proprietà numeri binari:
Puoi usare le proprietà del complemento a due; modifichi il sottraendo facendolo diventare positivo (in modulo e segno), fai complemento a due, perciò avrai una sottrazione secondo le proprietà del complemento a due.
Per fare la sottrazione secondo queste condizioni, rifai il complemento a due del sottraendo, e avrai alla fine da fare una semplice somma binaria, essendo però che hai segni concordi devi stare attento all'overflow.

Spero sia chiaro :-)

EDIT:
ricordavo di aver letto e risposto ad una domanda simile, era la tua :) in questo post:
http://www.matematicamente.it/forum/com ... 63886.html
posta pure domande relative a quel dubbio, tanto la domanda è uguale.
¶ Veramente nella vita la commedia e la tragedia s'intrecciano ed alternano di continuo. [Eugenio Corti]
¶ Ognuno è responsabile per ciò che fa e corresponsabile di ciò che lascia fare. [R. von Weizsäcker]
¶ Cerca lavoro col diploma e se sei fortunato finisci in catena a verniciare le lamiere. [Quinzio]
Avatar utente
hamming_burst
Moderatore
Moderatore
 
Messaggio: 283 di 4425
Iscritto il: 04/07/2009, 11:53

Messaggioda xsl » 30/12/2010, 16:37

Che risultato ottieni?
xsl
Junior Member
Junior Member
 
Messaggio: 120 di 173
Iscritto il: 12/07/2009, 00:48

Messaggioda Nepenthe » 02/01/2011, 15:02

Allora ecco il ragionamento che mi porta a un diverso risultato:
A459C31 è negativo poiché A= 1010 e il bit di segno è quindi 1, negativo.
poiché il segno è negativo e l'operazione da eseguire è una differenza, cambio il bit di segno del secondo numero e faccio la somma, cioè -(A459C31) = 2459C31.
Quindi ora l'operazione da fare è diventata 35ABD77 + 2459C31 che secondo i miei calcoli fa 5A059A8, risultato che non riporta.
Sbaglio io o a questo punto sbaglia chi ha messo l'altro risultato?
Nepenthe
New Member
New Member
 
Messaggio: 42 di 61
Iscritto il: 03/01/2010, 14:41


Torna a Informatica

Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti