Aritmetica binaria
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à.
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
Per verificare se hai commesso un errore dovremmo vedere i tuoi calcoli.
Allora. Lavorando con interi a 8bit.
Effettuando la somma 65 + (-9) si ottiene
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...
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...
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
grazie
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).
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.
A+B mi viene 74, A-B mi viene 56.
per rappresentare B ( essendo negativo) perche non dovrei complementarlo??
Grazie.
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.
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.
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.
Ciao..qualcuno potrebbe spiegarmi come risolvere questo prodotto?
11001010x
101,10101
vi sarei veramente grata...
11001010x
101,10101
vi sarei veramente grata...