Vai al contenuto

Aiuto con i numeri binari!!


Mollan

Messaggi raccomandati

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?

iMac 24" 2.8 Ghz + Mac Mini 1.42 Ghz S.D. + Mac Book Alu 2.4 Ghz + Cinema 20"

iPod Touch 16 Gb + iPod Video 30 Gb Black + iPod Nano 1 Gb White + Shure E2c

Switch day: 25/12/2005

Codice Wii: 7388 6255 4204 1465

http://mollan.netsons.org

Link al commento
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

"La musica è una rivelazione più profonda di ogni saggezza e filosofia...

Chi penetra il senso della mia musica potrà liberarsi dalle miserie in cui si trascinano gli altri uomini."

Ludwig van Beethoven

Link al commento
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.

MBP 2.5 Ghz, 4Gb Ram, 250 Gb HDD, GPU 512 mb

iMac 2.8 Ghz 4Core, 4Gb Ram, 1Tb HDD, GPU 512mb

Pavilion HDX9490EL 2.1 ghz, 4 Gb ram, 320GBHDD e scehda grafica da 512 mb up to 1756, scehrmo da 20,1 pollici (è un portatile eh).

eeePC900 0.9 ghz, 1 Gb ram, 20+16 Gb di HDD(SSD+SD)

Link al commento
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).

"La musica è una rivelazione più profonda di ogni saggezza e filosofia...

Chi penetra il senso della mia musica potrà liberarsi dalle miserie in cui si trascinano gli altri uomini."

Ludwig van Beethoven

Link al commento
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.

iMac 24" 2.8 Ghz + Mac Mini 1.42 Ghz S.D. + Mac Book Alu 2.4 Ghz + Cinema 20"

iPod Touch 16 Gb + iPod Video 30 Gb Black + iPod Nano 1 Gb White + Shure E2c

Switch day: 25/12/2005

Codice Wii: 7388 6255 4204 1465

http://mollan.netsons.org

Link al commento
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....

iMac 24" 2.8 Ghz + Mac Mini 1.42 Ghz S.D. + Mac Book Alu 2.4 Ghz + Cinema 20"

iPod Touch 16 Gb + iPod Video 30 Gb Black + iPod Nano 1 Gb White + Shure E2c

Switch day: 25/12/2005

Codice Wii: 7388 6255 4204 1465

http://mollan.netsons.org

Link al commento
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 ?

MBP 2.5 Ghz, 4Gb Ram, 250 Gb HDD, GPU 512 mb

iMac 2.8 Ghz 4Core, 4Gb Ram, 1Tb HDD, GPU 512mb

Pavilion HDX9490EL 2.1 ghz, 4 Gb ram, 320GBHDD e scehda grafica da 512 mb up to 1756, scehrmo da 20,1 pollici (è un portatile eh).

eeePC900 0.9 ghz, 1 Gb ram, 20+16 Gb di HDD(SSD+SD)

Link al commento
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)

iMac 24" 2.8 Ghz + Mac Mini 1.42 Ghz S.D. + Mac Book Alu 2.4 Ghz + Cinema 20"

iPod Touch 16 Gb + iPod Video 30 Gb Black + iPod Nano 1 Gb White + Shure E2c

Switch day: 25/12/2005

Codice Wii: 7388 6255 4204 1465

http://mollan.netsons.org

Link al commento
Condividi su altri siti

Archiviato

Questa discussione è archiviata e chiusa a future risposte.

×
×
  • Crea Nuovo...