Domanda Risolto Somma tra due complementi a 2

gius1805

Utente Bronze
13 Novembre 2020
42
22
0
38
Ultima modifica:
Dopo aver convertito A=41 e B=-24 in complemento a 2 (con lo stesso numero di bit) devo fare la somma e la sottrazione.
A=0101001 e B= 1101000.

Codice:
 1 1
0101001+
1101000=
11010001

Il problema è nella sottrazione. Io so che per fare la sottrazione devo fare A+(-B). Essendo B negativo dovrei fare A+B quindi B=0011000?

Codice:
111
0101001+
0011000=
1000001

Anche se non scrivete i calcoli va benissimo, mi basta sapere il procedimento.
Grazie mille in anticipo
 
Non capisco se ci stai chiedendo cosa ti chiede l'esercizio o come si fanno i calcoli. I calcoli si fanno in questo modo:
  • 41 + 24 = (binario di 41) + (binario di 24)
  • 41 - 24 = (binario di 41) + (binario in complemento a due di 24)
  • - 41 + 24 = 24 - 41 = (binario in complemento a due di 41) + (binario di 24)
  • -41 - 24 = (binario in complemento a due di 41) + (binario in complemento a due di 24)
Come interpretare quello che ti chiede l'esercizio non lo so... calcolali tutti e quattro così sei sicuro di non sbagliare.

Ti sei dimenticato un riporto nei conti che hai fatto.
 
Non capisco se ci stai chiedendo cosa ti chiede l'esercizio o come si fanno i calcoli. I calcoli si fanno in questo modo:
  • 41 + 24 = (binario di 41) + (binario di 24)
  • 41 - 24 = (binario di 41) + (binario in complemento a due di 24)
  • - 41 + 24 = 24 - 41 = (binario in complemento a due di 41) + (binario di 24)
  • -41 - 24 = (binario in complemento a due di 41) + (binario in complemento a due di 24)
Come interpretare quello che ti chiede l'esercizio non lo so... calcolali tutti e quattro così sei sicuro di non sbagliare.

Ti sei dimenticato un riporto nei conti che hai fatto.
scusa hai ragione, mi sono espresso veramente male.
Mi hanno insegnato che per fare una sottrazione tra due complementi a 2 devo fare A+(-B). Ma nel mio caso B è un numero negativo quindi sarebbe A+[-(-B)] = A+B. Considerando che B=-24 e A=+41 dovrei utilizzare +24 facendo:
Codice:
111  
0101001+
0011000=
1000001
In oltre so che si verifica un overflow nel caso che i due addendi siano concordi ma il risultato discorde e non si verifica se i due numeri sono discordi.
Il risultato d A+B è 1000001 è un numero negativo quindi si è verificato un overflow.
Il procedimento che ho fatto è corretto?
 
Corretto. Aggiungo che se stai sommando due numeri negativi, eg. (-1) + (-1) espressi su tre bit, hai qualcosa del tipo
Codice:
111
 111 +
 111 = 
 ---
1110
che sembra un overflow, ma in realtà è tutto normale: leggendo solo i primi tre bits hai 110 che è -2 in binario.
 
  • Mi piace
Reazioni: gius1805