Vai al contenuto


Archived

Questa discussione è archiviata e chiusa a future risposte.

Mollan

Aiuto con i numeri binari!!

Recommended Posts

Mollan    14

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


Saino91    10

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
madara88    11

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
Saino91    10
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
Mollan    14
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
Mollan    14

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
madara88    11

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
Mollan    14
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

  • Statistiche forum

    523022
    Topic Totali
    6298413
    Risposte Totali
  • Statistiche Utenti

    119693
    Utenti totali
    14120
    Record utenti online
    Giorgio Cipollaro
    Nuovo iscritto
    Giorgio Cipollaro
    Iscritto
×