Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Curiosità
Forum - C/C++ - Curiosità

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
K2 (Normal User)
Rookie


Messaggi: 27
Iscritto: 08/08/2008

Segnala al moderatore
Postato alle 16:14
Venerdì, 27/02/2009
Parto subito dallesempio:
Uno short int, utilizza 16 bit. Di questi 16 uno viene utilizzto per il segno,
quindi come risultato si ha un intervallo da:
-32.768(-2 alla 15esima) a 32767 (2 alla 15esima-1)
Non ho capito perchè si utilizza 2 alla 15esima-1 per rappresentare un intero positivo, mentre per raprresentare un numero negativo si usa -2 alla 15esima.
E' così e basta o c'è una spiegazione. Grazie in anticipo.
Ciao!

Ultima modifica effettuata da K2 il 27/02/2009 alle 16:15
PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 17:05
Venerdì, 27/02/2009
E' semplice ...

Con 16 bit puoi rappresentare 2 elevato a 16 valori diversi, ovvero 65536

Saranno meta' (32768) per i negativi e meta' (32768) per i positivi.

I negativi andranno da -1 a -32768

I positivi andranno da 0 a 32767

Tu non hai considerato che lo 0 e' un valore ed e' considerato tra i positivi.

PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 18:30
Venerdì, 27/02/2009
Perchè -2 ^ 15 = minimo numero negativo rappresentabile con 16 bit (con segno)
E (2^15)-1 = massimo numero rappresentabile con 16 bit (con segno)

E' matematica.

Ups, avevo sbagliato a scrivere la formula... ora con le parentesi è piu chiaro

Ultima modifica effettuata da pierotofy il 27/02/2009 alle 18:38


Il mio blog: https://piero.dev
PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 18:35
Venerdì, 27/02/2009
Testo quotato

Postato originariamente da pierotofy:
E 2^14 = massimo numero rappresentabile con 16 bit (con segno)

E' matematica.



Sì Piero ... ma e' una matematica un po' diversa la tua ...  :)

2^14 NON e' il massimo numero positivo rappresentabile con 16 bit, ma e' 2^15-1

PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 18:39
Venerdì, 27/02/2009
Ups, corretto.


Il mio blog: https://piero.dev
PM Quote
Avatar
K2 (Normal User)
Rookie


Messaggi: 27
Iscritto: 08/08/2008

Segnala al moderatore
Postato alle 22:17
Venerdì, 27/02/2009
Grazie delle risposte, ma io in matematica sono un vero danno, devo essere imboccato per capire le cose.
Ma nella forma (2^15)-1
quel -1 cosa sta ad indicare?
Perchè nella forma (-2^15) il meno 1 non ci sta?
Scusate ancora.

PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 22:21
Venerdì, 27/02/2009
Testo quotato

Postato originariamente da K2:

Grazie delle risposte, ma io in matematica sono un vero danno, devo essere imboccato per capire le cose.
Ma nella forma (2^15)-1
quel -1 cosa sta ad indicare?
Perchè nella forma (-2^15) il meno 1 non ci sta?
Scusate ancora.



Okay che la matematica non e' il tuo forte, ma hai rifatto la stessa domanda a cui avevo dato subito la risposta ... :asd:

2^15 fa 32768

ma dato che per i positivi devi considerare anche lo 0, allora togli 1 (2^15-1) da 32768 per avere il range 0...32767

per i negativi, dato che lo 0 non c'e', non togli 1 ...

OK?

PM Quote
Avatar
K2 (Normal User)
Rookie


Messaggi: 27
Iscritto: 08/08/2008

Segnala al moderatore
Postato alle 22:29
Venerdì, 27/02/2009
Ok. Adesso ho capito, l'ho detto che dovevo essere imboccato... più di una volta
Grazie mille.

PM Quote
Avatar
gioser (Normal User)
Pro


Messaggi: 111
Iscritto: 03/10/2008

Segnala al moderatore
Postato alle 1:31
Domenica, 01/03/2009
aggiungo una cosetta...

la rappresentazione dei numeri negativi con i numeri binari si fa con la regola del complemento a 2

ad es:

4dec = 100bin

su 8 bit si rappresenta come 00000100

in matemeatica
-4dec = -100bin

ma nel registro di un processore come si rappresenta il segno?

si fa il complemento a 1 di 00000100 e si ottiene 11111011 a questo punto si aggiunge 1 e si ottiene 11111100, che e' la rappresentazione in complemento a 2 di -4

la magia e' che i conti algebrici funzionano. Se faccio -4 + 6

11111100+
00000110=
---------
00000010

ottengo 2 :)

vediamo il caso esaustivo su 3 bit

011 3
010 2
001 1
000 0
111 -1
110 -2
101 -3
100 -4

vedo che vado da -(2^3)=-8 a (2^3)-1=7

questo è il link all'articolo sul complemento a 2 di wikipedia:
http://it.wikipedia.org/wiki/Complemento_a_2

Ciao :)

PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo