Benvenuti nella versione preliminare di Test di ITALIAMAC 4.0 Beta. I lavori sono ancora in corso, ci scusiamo per eventuali errori.
Mollan

Aiuto con i numeri binari!!

8 posts in this topic

Ciao, ho un serio problema con le somme in complemento a 2 dei numeri binari....

l'esempio è questo:

-10 + (-1) . Calcolare il risultato con il minimo numero di bit possibili

i bit sono 5 (credo) perchè 2^5 = 32, ossia ho da -16 a +15 come intervallo e il risultato dovrebbe finire in questo intervallo.

-10 in complemento a 2 viene: 10110

-1 in complemento a 2 viene: 11111

Eseguo la somma:

rip: 11100

10110 +

11111 =

--------

110101

Ora, si vede chiaramente che c'è stato overflow....ma non riesco a capire se genera un errore o meno....e se i bit minimi sono 5 o 6....

Qualcuno potrebbe aiutarmi?

Share this post


Link to post
Share on other sites

Penso che tu abbia sbagliato a convertire il 10. Infatti dovrebbe essere 1010 e in complemento 2 0110 l'uno invece è tutti uno.

sommo:

0110 +

1111 =

------

10101

Il numero di bit minimo è quindi di 4. L'ultimo uno non è da considerare il risultato è quindi -11. Infatti se fai il complemento 2 di 0101 ti viene 11.

Spero di esseri stato di aiuto.

Ciao

Share this post


Link to post
Share on other sites

esattamente sul complemento a due c'è una gran confusione perchè io noto in continuazione risultai diversi secondo numeri che dovrebbero essere uguali....non è che qualcuno ci spiega come si fa bene sto complemento a due ?

Ad esempio se io ho il numero 1011 in binario, in complemento a due quanto vale ? io faccio questa operazione cioè faccio il complemento a uno di 1011 cioè inverto gli uni con gli zeri e viceversa, e che diventa quindi 0100, poi aggiungo 1 e così diventa 0101, che in decimale corrisponde a : 5 o -5 ? come faccio a stabilire il segno e soprattutto ditemi se il procedimento che ho fatto è giusto... grazie a tutti.

Share this post


Link to post
Share on other sites
esattamente sul complemento a due c'è una gran confusione perchè io noto in continuazione risultai diversi secondo numeri che dovrebbero essere uguali....non è che qualcuno ci spiega come si fa bene sto complemento a due ?

Ad esempio se io ho il numero 1011 in binario, in complemento a due quanto vale ? io faccio questa operazione cioè faccio il complemento a uno di 1011 cioè inverto gli uni con gli zeri e viceversa, e che diventa quindi 0100, poi aggiungo 1 e così diventa 0101, che in decimale corrisponde a : 5 o -5 ? come faccio a stabilire il segno e soprattutto ditemi se il procedimento che ho fatto è giusto... grazie a tutti.

Il complemento a due si può fare come hai detto tu o più semplicemente. Prendi il numero binario da DESTRA e cambi uno in zer e viceversa escludendo tutto ciò che c'è prima dell'uno.

Quindi il tuo esempio 1011 il tuo numero comincia con uno (quello in grassetto), lo lasci stare e cambi da lì tutti i numeri. se ci fosse stato ad esempio 1110 cambiavi i numeri dal secondo uno a partire da destra. Il tuo metodo è comunque giusto. Vedi differenze fra i numeri perchè lui ha utilizzato 5 bit io 4. La differenza di segno si capisce se il numero finisce con 1 o con 0. Comuqnue dai un'occhiata anche qui o qui(inglese).

Share this post


Link to post
Share on other sites
Penso che tu abbia sbagliato a convertire il 10. Infatti dovrebbe essere 1010 e in complemento 2 0110 l'uno invece è tutti uno.

La prima linea è quella dei riporti

sommo:

0110 +

1111 =

------

10101

Il primo numero inizia per 0.... ossia è un numero maggiore di 0. Il testo invece parla di (-10)....e in complemento a 2 i numeri negativi iniziano con 1.

Il numero di bit minimo è quindi di 4. L'ultimo uno non è da considerare il risultato è quindi -11. Infatti se fai il complemento 2 di 0101 ti viene 11.

No, il numero minimo di bit è 5.

2^4 = 16, ossia un intervallo tra -8 e +7 (il mio risultato è -11, quindi non basta)

2?5 = 32 ossia da -16 a +15, e ci sta dentro qui.

Share this post


Link to post
Share on other sites

Ad esempio se io ho il numero 1011 in binario, in complemento a due quanto vale ? io faccio questa operazione cioè faccio il complemento a uno di 1011 cioè inverto gli uni con gli zeri e viceversa, e che diventa quindi 0100, poi aggiungo 1 e così diventa 0101, che in decimale corrisponde a : 5 o -5 ? come faccio a stabilire il segno e soprattutto ditemi se il procedimento che ho fatto è giusto... grazie a tutti.

1011 in binario equivale a 8+3 = 11

Se preso in complemento a 2 (il testo lo dice sempre) il numero diventa:

1011

-8 + 3+1 = -5

Il numero è minore di 0 poichè inizia con un 1 (MA SOLO IN COMPLEMENTO A 2).

I numeri maggiori di zero non hanno complemento a 2.

il primo 1011 sembra uguale al secondo perchè sono "errati" i bit....

2^4 = 16, un intervallo da -8 a +7, e +11 non è dentro.

Il numero corretto (per sommmare in complemento a 2) sarebbe 01011. Come vedi inizia per 0, quindi è positivo.

-5 invece con 5 bit (superflui per il numero in sè, ma necessari per l'operazione) sarebbe 11011.

La domanda di inizio topic era più che altro sui riporti dei numeri decimali....e su un eventuale overflow....

Share this post


Link to post
Share on other sites

graize mollan e grazie saino.......quindi in definitiva (purtroppo non posso rispondere alla tua domanda XD) per vedere il segno del risultato devo vedere il numero se il primo bit a sinistra è 1 o 0, se è 1 verrà in complemento a due con il segno meno, mentre se il primo bit a sinistra è 0 verrà positivo, ho detto bene ?

Share this post


Link to post
Share on other sites
graize mollan e grazie saino.......quindi in definitiva (purtroppo non posso rispondere alla tua domanda XD) per vedere il segno del risultato devo vedere il numero se il primo bit a sinistra è 1 o 0, se è 1 verrà in complemento a due con il segno meno, mentre se il primo bit a sinistra è 0 verrà positivo, ho detto bene ?

Solo se i numeri sono codificati in complemento a 2, altrimenti per i numeri in binario normale devi fare

a2^(n-1)+b2^(n-2) ............ + c2^0

ad esempio:

1010

1*2^3 + 0*2^2 + 1*2^1 + 0*2^0 = 10 (dieci)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now