HEX - Nozioni basilari

..una base da cui partire

« Older   Newer »
 
  Share  
.
  1. andrea1989
        Like  
     
    .

    User deleted


    Alcune nozioni sull’HEX



    NOTE:
    Il tutorial originale (preso dalla rete) era in lingua inglese.
    Mi sono solamente limitato a tradurlo e riadattarlo dove era necessario, ai fini di una maggiore comprensione.
    Ringrazio l'autore o gli autori del tutorial.



    Introduzione:



    Il sistema esadecimale (abbreviato HEX), come il nome potrebbe far capire, è un sistema numerico a base 16.
    Quello che noi usiamo abitualmente è il “decimale”, a base 10.
    L’esadecimale usa le lettere per esprimere numeri superiori al 9.

    Sistema DECIMALE:
    0,1,2,3,4,5,6,7,8,9,10

    Sistema ESADECIMALE:
    0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f


    Alcune info utili riguardo l’hex:



    -Come per i numeri decimali, quelli esadecimali possono essere divisi in colonne.

    Per esempio ,nel sistema decimale, 93 può essere diviso in unità (3) e decine (9).

    Questo tipo di divisione in unità e decine va bene per i numeri fino al 99.

    -Per i numeri esadecimali c’è una colonna per quelli che vanno da 1 a 16 e un’altra per quelli esadecimali.
    Per esempio , in hex, il numero c4 228 può essere diviso in unità (228) e esadecimali (c4).


    Da HEX a DECIMALE:


    Ecco due piccoli passaggi per ottenere il valore decimale del corrispettivo numero esadecimale.

    1) Si moltiplica il valore della parte esadecimale per 16.
    Esempio : e3
    e = 14
    14 * 16 = 224

    2) Si aggiunge al valore ottenuto quello delle unità. Il totale è la trasformazione del numero esadecimale in decimale.
    224 + 3 = 227

    e3 = 227

    Da DECIMALE a HEX:


    Ecco ora il procedimento inverso.

    1) Si divide il numero decimale per 16. In questo modo di ottiene il valore del numero esadecimale. (da non dimenticare la trasformazione di un numero maggiore di 9 in una lettera corrispondente).

    Esempio :
    234/16= 14 con resto 10

    14 = e

    2) Il resto rappresenta la colonna delle unità.

    10 = a

    234 = ea



    Da BINARIO a HEX:



    I dati in un pc sono scambiati tra le varie componenti attraverso conduttori metallici chiamati data lines.
    Un gruppo di data lines è chiamato data bus.

    Ogni data line porta un unità di data chiamata BIT.
    Un bit può essere acceso o spento (ON e OFF).
    Se acceso viene considerato come 5 volts, spento come 0 volts, sebbene i sistemi moderni usano un voltaggio minore per ridurre i consumi e i costi.

    I dati possono essere rappresentati come una serie di 1 e 0.
    1 significa che il bit è acceso.
    0 che è spento.

    Un gruppo di 8 bits viene chiamato byte.

    Un byte di valore 0 può essere rappresentato come 00000000.

    I bytes diversi da 0 possono essere formati da qualunque combinazione di 1 e 0.

    01100010 verrà preso come esempio.

    In C, un byte viene chiamato character (abbreviato CHAR).

    Quando i dati sono rappresentati come una serie di 1 e 0, si dice che si sta usando un metodo binario, oppure in base in 2…perché sono usate solo 2 cifre.

    L’ultimo bit a sinistra di un byte viene chiamato MSB, ovvero “most significant bit” (il bit più importante).
    L’ultimo bit a destra è quello meno importante…LSB ovvero “less significant bit”.

    Un piccolo ripasso può essere utile per quelli che sono un po restii con le potenze di un numero.
    Per elevare un numero a potenza bisogna moltiplicare il numero stesso (chiamato base) per l’esponente di esso.

    52 = 5*5 = 25
    23 = 2*2*3 = 8
    e cosi via…


    Ogni posizione di un bit ha un peso, un’importanza, un valore.
    In ogni sistema numerico la cifra più a destra (la meno importante) è corrisponde all’unità.
    Quindi il valore di essa è uguale alla base elevata per la potenza di 0.
    Ogni numero elevato a 0 è uguale a 1.

    L’esponente cresce di una unità ogni volta che ci spostiamo su un bit a sinistra.
    Perciò, il secondo posto da destra ha valore uguale alla base elevata alla potenza di 1.
    Ogni numero elevato a 1 è uguale al numero stesso.

    Abbiamo imparato sin dalle scuole elementari che il secondo posto da destra è quello delle decine.
    Questo perché usavamo un sistema a base 10 e lo stavamo elevando alla potenza di 1.

    Dato che nel sistema binario è usata una base di 2, il secondo posto da destra ha valore 2, perché è 2 elevato alla potenza di 1.
    I successivi valori sono 22 = 4, poi 23 = 8 e cosi via.

    Gli esponenti sono spessi usate per assegnare un bit in un numero binario.
    Il bit 0 è sull’estrema destra del byte e il bit 7 è sull’estrema sinistra.
    Il Bit 0 è l’LSB mentre il bit 7 è l’MSB.

    I Data Bits sono abbreviati usando la lettera D.


    image


    L’esempio sopra riporta il numero binario 01100010.
    Per capire quale sia il valore decimale, basta aggiungere i valori dei bits che sono accesi (ON).
    Nel nostro caso sono i bits 6,5 e 1.

    Il totale è 64+32+2 = 98

    Una descrizione generale della procedura è quella di moltiplicare il valore della posizione e sommare.
    Nel nostro caso avremo :

    (0 * 128) + (1 * 64) + (1 * 32) + (0 * 16) + (0 * 8) + (0 * 4) + (1 * 2) + (0 * 1) = 98.

    Un modo comune per rappresentare i numeri in un programma scritto in C è quello di usare la notazione esadecimale, o HEX.
    Usa una base di 16 e divide il byte in due gruppo di 4 bits ciascuno : nnnn nnnn.

    Ogni gruppo è chiamato NIBBLE.
    Un NIBBLE con tutti bits spenti (0000) è uguale a 0.
    Con tutti i bits accesi (1111) è uguale a 15 (8+4+2+1).

    Perciò abbiamo valori da 0 a 15 con un sistema in base 16.

    La notazione esadecimale è semplice.
    Usa le cifre da 0 a 9 e per indicare i numeri da 10 a 15 usa le lettera dalla A alla F.
    Come da tabella:

    image


    Il NIBBLE alla destra del byte è quello meno importante.
    E’ il posto delle unità perché corrisponde a 160
    Quello dopo è il posto degli esadecimali perché è 161, poi 162 = 256, and cosi via.

    Per ottenere il valore decimale, prendi il valore dei NIBBLEs, moltiplicalo per i valori della posizione a somma il tutto.
    Perciò, il valore HEX 9B = (9*16) + (11*1) = 155


    Per mostrare un numero esadecimale in C, bisogna aggiungere il prefisso 0x.
    L’esempio sopra sarà 0x9B oppure 0x9b.
    Questa notazione ,come vedete, non è case-sensitive (ovvero non fa distinzioni tra maiuscolo e minuscolo), sebbene molte cose in C lo siano.

    La seguente tabella è simile a quella precedente ma mostra anche i valori esadecimali scritti in C.

    image

    Una WORD è di solito di 16 bits, da D0 a D15.
    Ecco una tabella che spiega la relazione tra i nomi dei bit e il sistema in base 2.

    image

    Le seguenti tabelle mostrano i bits in corrispondenza al loro valore in HEX.

    image

    Una WORD può essere divisa in 4 NIBBLEs.
    Può essere rappresentata mostrando i suoi 4 NIBBLEs come un numero esadecimale di 4 posti.
    Per esempio il numero decimale 19070 può essere rappresentato nel suo esadecimale 0x4A7E.

    0x4A7E = (4 * 163) + (10 * 162) + (7 * 161) + (14 * 160)
    = ( 4 * 4096) + (10 * 256) + (7 * 16) + (14 * 1)
    = 19070.

    Nel linguaggio C, una WORD è spesso chiamata integer, abbreviato int.
    Un integer (intero) può essere usato per rappresentare numeri che hanno un range da negativi a positivi, o numeri che hanno solo valori positivi.

    In altre parole un INTEGER può essere signed (con segno) o unsigned (senza segno).
    Un integer signed può avere sia valori positivi che negativi.
    Un integer unsigned può essere solo positivo.

    Un integer da 16-bit unsigned può avere valori da 0 a 65535.
    E’ spesso abbreviato come “unsigned”.

    Il bit 15 è usato come un bit di segno per gli integer signed,
    Se è acceso (ON) il numero è negativo.
    Valori positivi vanno da 0 a 32767.
    Valori negativi da -1 a -32768.

    Alcuni esempio sono mostrati sotto.

    Nota che la versione signed è uguale a -1* (65536 – versione unsigned).
    Per esempio, per ottenere un numero signed da un valore unsigned 49151:

    signed = -1 * (65536 – 49151) = -16385

    image



    Una WORD lunga è generalmente considerata avere 4 bytes, oppure 32 bits.
    Viene usata per numeri molto grandi.
    Le LONG WORD possono essere signed o unsigned.
    Le signed hanno un range da -2,147,483,648 a 2,147,483,647.
    Il valore unsigned più grande è 0xFFFFFFFF = 4,294,967,295.
    Il valore unsigned minimo è 0.






    Edited by andrea1989 - 22/8/2006, 22:38
     
    .
  2. mralby2005
        Like  
     
    .

    User deleted


    Ecco a cosa serviva sistemi a scuola .. :D

    Grazie andrè ;)
     
    .
  3. totti10roma
        Like  
     
    .

    User deleted


    grazie tutorial letto e quasi imparato a memoria XD
     
    .
  4. polymet
        Like  
     
    .

    User deleted


    grandioso,fatto molto bene e complimenti per la traduzione
     
    .
  5. mr.smith
        Like  
     
    .

    User deleted


    complimenti mi ricorda la scuola superiore comunque bravo ( descritto in modo semplice )
     
    .
  6. andrea1989
        Like  
     
    .

    User deleted


    Successone! :ebr:
     
    .
  7.     Like  
     
    .
    Avatar

    UTENTE DIVINO

    Group
    Member
    Posts
    55,905
    Reputation
    0

    Status
    Offline
    mamma mia nn ci capisco niente!!! grande andrè
     
    .
  8. djkharma
        Like  
     
    .

    User deleted


    ho saputo che per editare dei completi e per attivare tipo il numero sul petto o sul pantaloncino si fa proprio con hex...
    ma non ci sono tutorial?
     
    .
  9. andrea1989
        Like  
     
    .

    User deleted


    L'hex si impara mano mano.

    Non ci sono tutorial che dicono "cosi editi questo e cosi editi quest'altro". :)
     
    .
8 replies since 22/8/2006, 21:33   761 views
  Share  
.