Aritmetica binaria

starsuper
Salve ho alcuni concetti che non mi risultano ciari e vi sarò grato se qualcuno mi aiuterà.
Ho alcuni dubbi sulle rappresentazioni binarie, mi spiego meglio, sappiamo che abbiamo la notazione modulo e segno, dove un bit è riservato al segno, compl2, e compl1.
I numeri positivi in c2 "non si toccano". I negativi, li trasformiamo con la regolina , e fin qui tutto chiaro.
A quanto ho cpaito io, il C2 è solo una convenzione(anche se il calcolatore svolge davvero la conversione) per semplificiare l'operazione di sottrazione binaria. Infatti, non facciamo altro che fare una somma tra un numero positivo e un numero negativo.
( Ho capito cosi ma forse ho sbagliato)...
passando alla pratica:

A=(65)
B=-(9)
voglio trovare A+B e A-B

mi porto i numeri in binario e traformo il corrispondente di -9 in C2.
Quando vado a fare la somma A+B, non si verifica overflow, ma il risultato non è 59. Come mai?????



Grazie mille a chiunque mi aiuterà.

Risposte
apatriarca
Per verificare se hai commesso un errore dovremmo vedere i tuoi calcoli.

Allora. Lavorando con interi a 8bit.

65 = 0100 0001
 9  = 0000 1001
-9 = 1111 0111


Effettuando la somma 65 + (-9) si ottiene

  0100 0001 +
  1111 0111 =
--------------
1 0011 1000  (overflow...)

Il numero ottenuto è quindi 0011 1000 = 56. Che è esattamente il risultato cercato (perché 59? 65 - 9 = 56...).

Per quanto riguarda la sottrazione si fa sommando al primo il complemento a due del secondo. Puoi fare la prova ma dovrebbe venire corretto.

Spero di non aver detto fesserie che saranno 5 anni che non faccio questo genere di calcoli...

starsuper
Grazie ho torvato subito errore. Non avevo complementato i bit a zero "mancanti". ma per fare A+B? Non ho già sommato il primo al C2 del secondo?
grazie

apatriarca
No. A + B somma A e B direttamente (il fatto che B sia negativo non ha importanza). A - B lo fai invece calcolando prima -B (9) e poi sommando A + (-B).

starsuper
Si ok ho eseguito i calcoli e adesso mi tornano. Ma quello che non mi torna, è perche non devo complementare B ad esempio nella somma??
A+B mi viene 74, A-B mi viene 56.
per rappresentare B ( essendo negativo) perche non dovrei complementarlo??


Grazie.

apatriarca
Ma B non è 9, ma -9 e quindi in binario è il complemento a due di 9. Quindi A + B = 65 - 9 = 56 e A - B = 65 + 9 = 74. Nel primo caso fai la somma tra la rappresentazione binaria di 65 e quelle di -9 direttamente, nel secondo prendi la rappresentazione binaria di -9, ne fai il complemento a due ottenendo 9 e poi sommi questo numero con la rappresentazione binaria di 65.

starsuper
Ok, credo/spero di aver capito.
se scompongo -9, ottengo -(1001), ma -9 in binario è -> 0111
quando vado a fare a+(-b), voglio il valore -9, quando vado a fare a-(-b), ottengo a+b, ma a ce l abbiamo b non lo voglio complementato e quindi prendo 1001(perche voglio 9 non -9).
Ho scritto un cas8, ma i calcoli mi tornano tutti.

lorenza.peddis
Ciao..qualcuno potrebbe spiegarmi come risolvere questo prodotto?
11001010x
101,10101

vi sarei veramente grata...

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.