PDA

View Full Version : [c - java]Variabili in notazione esadecimale


braian
05-08-2009, 09:51
Vorrei un po' di chiarezza per le variabili in notazione esadecimale:

trovo in diversi programmi sia c che java delle variabili int = 0x123...

Cosa significano?
la notazione esadecimale se non sbaglio è appunto in base 16 e utilizza caratteri 0123456789ABCDEF

Potete darmi qualche spiegazione? grazie

banryu79
05-08-2009, 10:38
Semplice per distinguere un letterale intero espresso in base esadecimale si specifica il letterale ponendo il prefisso "0X" o "0x" (ZERO - X, in Java, la X può essere sia upper che lower case, così come le lettere a-f che si usano per i valori esadecimali).

Questo per evitare fraintendimenti, ad esempio:

// a vale 51 in base decimale
int a = 51;

// a vale 51 in base esadecimale (corrisponde al valore 81 in base decimale)
// è grazie al prefisso "0x" che si specifica che il letterale intero è espresso in base esadecimale
int a = 0x51;

goldorak
05-08-2009, 10:45
Non capisco quale sia il problema.
I numeri esadecimali usano appunto 16 cifre (0-9, A,B,C,D,E,F).
Devi avere un modo per indicare al computer che un certo numero va interpretato come esadecimale, oppure ottale oppure in base decimale.

Ad esempio se scrivo

int x = 35 ; e' implicito che 35 e' scritto in base 10

int x = 0x23 ; e' un numero esadecimale che rappresenta 35 in base 10. Perche' ? Perche' 0x23 = 2*16^1 + 3 = 32 + 3 = 35.


Se scrivi 0xACE e' un numero esadecimale che rappresenta il valore 10*16^2+12*16+14 = 2766 in base 10.

Lo 0x che metti davanti al numero serve per indicare al compilatore java o c che il numero che segue va interpretato come esadecimale. Tutto qui, non e' niente di complicato.

braian
05-08-2009, 11:01
Non potevo chiedere spiegazione migliore, non sapevo che lo ox indicasse come leggere l'intero.
Grazie ancora.