Mollan

Aiuto con i numeri binari!!

8 risposte in questa discussione

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?

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti


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

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

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.

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
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).

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
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.

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

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....

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

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 ?

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
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)

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Crea un account o accedi per lasciare un commento

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

Crea un account

Iscriviti per un nuovo account nella nostra comunità. È facile!


Registra un nuovo account

Accedi

Sei già registrato? Accedi qui.


Accedi Ora

  • Statistiche forum

    520390
    Topic Totali
    6277085
    Risposte Totali
  • Statistiche Utenti

    118738
    Utenti totali
    14120
    Record utenti online
    Alessio Di Gaetano
    Nuovo iscritto
    Alessio Di Gaetano
    Iscritto