Somma esadecimali

Messaggioda Nepenthe » 30/12/2010, 12: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 73
Iscritto il: 03/01/2010, 13:41

Messaggioda hamming_burst » 30/12/2010, 15: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:
https://www.matematicamente.it/forum/com ... 63886.html
posta pure domande relative a quel dubbio, tanto la domanda è uguale.
hamming_burst
Cannot live without
Cannot live without
 
Messaggio: 259 di 8058
Iscritto il: 04/07/2009, 10:53

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

Che risultato ottieni?
xsl
Junior Member
Junior Member
 
Messaggio: 120 di 203
Iscritto il: 11/07/2009, 23:48

Messaggioda Nepenthe » 02/01/2011, 14: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 73
Iscritto il: 03/01/2010, 13:41


Torna a Informatica

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite