Capitolo – 4
Sistemi numerici
Introduzione
Nella programmazione del recupero dati o in qualsiasi altra programmazione di risoluzione dei problemi del disco, è molto comune dover lavorare con diversi tipi di sistemi numerici contemporaneamente per eseguire una singola attività o anche una parte molto piccola del lavoro, come il calcolo di posizioni specifiche di MBR estesi in termini di CHS (cilindri, testine e settori); queste posizioni guidano il programmatore durante l'intera operazione.
Probabilmente la maggior parte dei nuovi programmatori incontrano difficoltà o confusione nel convertire diversi tipi di sistemi numerici tra loro quando cercano di imparare la programmazione di sistema in linguaggio assembly, in cui è obbligatorio l'uso dei sistemi numerici binario ed esadecimale.
In questo capitolo discuteremo molti concetti importanti, tra cui i sistemi numerici binario, decimale ed esadecimale e anche l'organizzazione dei dati binari, come la conversione di bit, nibble, byte, parole e doppie parole, ecc. e molti altri argomenti correlati ai sistemi numerici.
La maggior parte dei sistemi informatici moderni non rappresenta i valori numerici utilizzando il sistema decimale, ma in genere utilizza il sistema binario o il sistema numerico in complemento a due.
Nella programmazione si utilizzano comunemente quattro sistemi numerici: binario, ottale, decimale ed esadecimale . Tuttavia, il più delle volte incontreremo sistemi numerici binari, decimali ed esadecimali. Questi sistemi numerici differiscono a seconda del loro numero base.
Ogni sistema numerico ha il proprio numero base e il proprio simbolo di rappresentazione. Ho presentato questi quattro numeri nella seguente tabella:
Nome del sistema numerico |
Numero base |
Simbolo utilizzato per rappresentare |
Binario |
2 |
B |
Ottale |
8 |
Domanda o domanda |
Decimale |
10 |
D o no |
Esadecimale |
16 |
TEMPO |
Sistema numerico decimale
Il sistema numerico decimale utilizza la base 10 e comprende i numeri da 0 a 9. Non confondetevi, questo è il sistema numerico comune che utilizziamo nella nostra vita quotidiana per i calcoli. I valori ponderati in base alla potenza per ciascuna posizione saranno:
Quindi se ho il numero decimale 218 e voglio rappresentarlo nel modo sopra, allora il numero 218 sarà rappresentato come segue:
2 * 102 + 1 * 101 + 8 * 100
= 2 * 100 + 1 * 10 + 8 * 1
= 200 + 10 + 8
= 218
Ora diamo un'occhiata a un esempio di un numero decimale frazionario. Supponiamo di avere il numero 821.128. Ogni cifra a sinistra della virgola decimale rappresenta un valore da zero a nove, mentre una potenza di dieci è rappresentata dalla sua posizione nel numero (a partire da 0).
Le cifre che compaiono a destra della virgola decimale rappresentano il valore da zero a nove moltiplicato per una potenza negativa crescente di dieci. Vediamo come:
8*102+2*101+1*100+1*10-1+2*10-2+8*10-3
= 8 * 100 + 2 * 10 + 1 * 1 + 1 * 0,1 + 2 * 0,01 + 8 * 0,001
= 800 + 20 + 1 + 0,1 + 0,02 + 0,008
= 821.128
Sistema numerico binario
Oggigiorno la maggior parte dei sistemi informatici moderni funziona utilizzando la logica binaria. Il computer rappresenta i valori utilizzando due livelli di tensione che indicano OFF o ON utilizzando 0 e 1. Ad esempio, una tensione di 0 V è solitamente rappresentata da uno 0 logico e una tensione di +3,3 V o +5 V è rappresentata da un 1 logico. Quindi, con due livelli, possiamo rappresentare esattamente due valori diversi. Possono essere due valori diversi, ma per convenzione utilizziamo i valori 0 e 1.
Poiché esiste una corrispondenza tra i livelli logici utilizzati da un computer e le due cifre utilizzate nel sistema numerico binario, non sorprende che i computer utilizzino il sistema binario.
Il sistema numerico binario funziona come il sistema numerico decimale, con la differenza che il sistema binario utilizza la base 2 e solo le cifre 0 e 1; l'utilizzo di qualsiasi altra cifra renderà il numero un numero binario non valido.
I valori ponderati per ogni voce sono presentati come segue:
La tabella seguente mostra la rappresentazione di un numero binario rispetto a un numero decimale:
Numero decimale |
Rappresentazione binaria dei numeri |
0 |
0000 |
1 |
0001 |
2 |
0010 |
3 |
0011 |
4 |
0100 |
5 |
0101 |
6 |
0110 |
7 |
0111 |
8 |
1000 |
9 |
1001 |
10 |
1010 |
11 |
1011 |
12 |
1100 |
13 |
1101 |
14 |
1110 |
15 |
1111 |
Di solito, nel caso di numeri decimali, ogni tre cifre decimali sono separate da una virgola per rendere i numeri più grandi più facili da leggere. Ad esempio, è molto più facile leggere un numero 840.349.823 che 840349823.
Traendo ispirazione dalla stessa idea, esiste una convenzione simile per i numeri binari, così che sia più facile leggerli, ma nel caso dei numeri binari aggiungeremo uno spazio ogni quattro cifre a partire dalla cifra meno significativa a sinistra della virgola decimale.
Ad esempio, se il valore binario è 1010011001101011, verrà scritto come 1010 0110 0110 1011.
Conversione da numeri binari a decimali
Per convertire il numero binario in numero decimale, moltiplichiamo ogni cifra per la sua posizione ponderata e sommiamo insieme ciascuno dei valori ponderati. Ad esempio, il valore binario 1011 0101 rappresenta:
1*27 + 0*26 + 1*25 + 1*24 + 0*23 + 1*22 + 0*21 + 1*20 = 1 * 128 + 0 * 64 + 1 * 32 + 1 * 16 + 0 * 8 + 1 * 4 + 0 * 2 + 1 * 1 = 128 + 0 + 32 + 16 + 0 + 4 + 0 + 1 = 181
Conversione da numero decimale a binario
Per convertire qualsiasi numero decimale nel suo sistema numerico binario, il metodo generale è quello di dividere il numero decimale per 2, se il resto è 0, scrivere a lato uno 0. Se il resto è 1, scrivere un 1.
Questo processo continua dividendo il quoziente per 2 e eliminando il resto precedente finché il quoziente non è 0. Quando si esegue la divisione, i resti che rappresenteranno l'equivalente binario del numero decimale, vengono scritti a partire dalla cifra meno significativa (a destra) e ogni nuova cifra viene scritta sulla cifra più significativa (a sinistra) della cifra precedente.
Prendiamo un esempio . Consideriamo il numero 2671. La conversione binaria per il numero 2671 è stata fornita nella seguente tabella.
Divisione |
Quoziente |
Resto |
Numero binario |
2671 / 2 |
1335 |
1 |
1 |
1335 / 2 |
667 |
1 |
11 |
667 / 2 |
333 |
1 |
111 |
333 / 2 |
166 |
1 |
1111 |
166 / 2 |
83 |
0 |
0 1111 |
83 / 2 |
41 |
1 |
10 1111 |
41 / 2 |
20 |
1 |
110 1111 |
20 / 2 |
10 |
0 |
0110 1111 |
10 / 2 |
5 |
0 |
0 0110 1111 |
5 / 2 |
2 |
1 |
10 0110 1111 |
2 / 2 |
1 |
0 |
010 0110 1111 |
1 / 2 |
0 |
1 |
Numero di telefono: 1010 0110 1111 |
Questa tabella ha lo scopo di chiarire ogni passaggio della conversione, tuttavia nella pratica, per ottenere una conversione più semplice e veloce, è possibile seguire la seguente procedura per ottenere i risultati.
Sia 1980 un qualsiasi numero decimale da convertire nel suo equivalente binario. Quindi, seguendo il metodo indicato nella tabella, risolveremo questo problema nel modo seguente:
Quando disponiamo i resti secondo la direzione della freccia, otteniamo il numero binario equivalente al numero decimale 1980 = 0111 1011 1100
Formati numerici binari
Di solito scriviamo i numeri binari come una sequenza di bit. "Bit" è l'abbreviazione di "cifre binarie" in una macchina. Ci sono limiti di formato definiti per questi bit. Questi limiti di formato sono stati rappresentati nella seguente tabella:
Nome |
Dimensioni in bit |
Esempio |
Morso |
1 |
1 |
Sgranocchiare |
4 |
0101 |
Byte |
8 |
0000 0101 |
Parola |
16 |
0000 0000 0000 0101 |
Doppia parola |
32 |
0000 0000 0000 0000 0000 0000 0000 0101 |
Possiamo aggiungere tutti gli zeri iniziali che desideriamo senza modificarne il valore in nessuna base numerica; tuttavia, normalmente aggiungiamo gli zeri iniziali per adattare il numero binario al limite della dimensione desiderata.
Ad esempio, possiamo rappresentare il numero 7 nei diversi casi come mostrato nella tabella:
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Morso | | | | | | | | | | | | | | 1 | 1 | 1 |
Sgranocchiare | | | | | | | | | | | | | 0 | 1 | 1 | 1 |
Byte | | | | | | | | | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 |
Parola | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 |
Dove il bit più a destra in un numero binario è la posizione di bit zero e a ogni bit a sinistra viene assegnato il numero di bit successivo, come mostrato nella tabella sopra.
Il bit zero è solitamente definito come il bit meno significativo o LSB e il bit più a sinistra è solitamente chiamato il bit più significativo o MSB. Fateci sapere di questi formati di rappresentazione:
Il pezzo
Un bit è la più piccola unità di dati su un computer binario. Un singolo bit è in grado di rappresentare un solo valore, 0 o 1. Se si utilizza un bit per rappresentare un valore booleano (vero/falso), quel bit rappresenta vero o falso .
Il morso
Il Nibble rientra in particolare nell'area di interesse quando parliamo di sistemi numerici, numeri BCD (Binary Coded Decimal) e/o esadecimali (base 16).
Un nibble è una raccolta di bit su un confine di 4 bit. Ci vogliono quattro bit per rappresentare una singola cifra BCD o esadecimale. Con un nibble, possiamo rappresentare fino a 16 valori distinti.
Nel caso dei numeri esadecimali, i valori 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E e F sono rappresentati con quattro bit. Il BCD utilizza dieci cifre diverse (0, 1, 2, 3, 4, 5, 6, 7, 8, 9) e richiede quattro bit.
In effetti, qualsiasi valore distinto di sedici può essere rappresentato con un nibble, ma le cifre esadecimali e BCD sono gli elementi principali che possiamo rappresentare con un singolo nibble. La rappresentazione a livello di bit del nibble sarà la seguente:
Il byte
Il byte è la struttura dati più importante utilizzata dal microprocessore 80x86. Un byte è composto da otto bit ed è il più piccolo elemento dati indirizzabile nel microprocessore. La memoria principale e gli indirizzi I/O nel computer sono tutti indirizzi byte e quindi l'elemento più piccolo a cui si può accedere individualmente dai programmi di un microprocessore 80x86 è un valore a 8 bit.
Per accedere a qualcosa di più piccolo è necessario leggere il byte contenente i dati e mascherare i bit indesiderati. Faremo la programmazione per farlo nei prossimi capitoli.
L'uso più importante di un byte è contenere un codice di carattere. I bit in un byte sono numerati dal bit zero (b0) al bit sette (b7) come segue:
Il bit 0 (b0) è il bit di ordine inferiore o meno significativo e il bit 7 (b7) è il bit di ordine superiore o più significativo del byte.
Come vediamo qui, un byte contiene esattamente due nibble, dove i bit da b0 a b3 costituiscono il nibble di ordine inferiore e i bit da b4 a b7 costituiscono il nibble di ordine superiore.
Poiché un byte contiene esattamente due nibble, i valori byte richiedono due cifre esadecimali.
Poiché il computer moderno tradizionale è una macchina indirizzabile a byte, risulta più efficiente manipolare un byte intero piuttosto che un singolo bit o nibble.
Questo è il motivo per cui la maggior parte dei programmatori utilizza un byte intero per rappresentare tipi di dati che non richiedono più di 256 elementi
Poiché un byte contiene otto bit, può rappresentare 28 o 256 valori diversi perché il numero binario massimo di 8 bit può essere 1111 1111 che equivale a 256 (decimale), quindi generalmente un byte viene utilizzato per rappresentare quanto segue:
- valori numerici senza segno nell'intervallo da 0 a 255
- numeri con segno nell'intervallo da -128 a +127
- Codici dei caratteri ASCII
- E altri tipi di dati speciali che non richiedono più di 256 valori diversi, poiché molti tipi di dati hanno meno di 256 elementi, quindi solitamente sono sufficienti otto bit.
La Parola
Una parola è un gruppo di 16 bit . Ma tradizionalmente il confine per una parola è definito come 16 bit o la dimensione del bus dati per il processore e una parola doppia è due parole. Quindi una parola e una parola doppia non hanno una dimensione fissa ma variano da sistema a sistema a seconda del processore. Tuttavia per una lettura concettuale, definiremo una parola come due byte.
Quando vediamo una parola a livello di bit, verrà numerata come i bit in una parola a partire dal bit zero (b0) fino al quindici (b15). La rappresentazione a livello di bit sarà la seguente:
Dove il bit 0 è il LSB (Least Significant Bit) e il bit 15 è il MSB (Most Significant Bit). Quando c'è bisogno di fare riferimento agli altri bit in una parola, il loro numero di posizione bit viene utilizzato per farvi riferimento.
In questo modo una parola contiene esattamente due byte tali che dal bit b0 al bit b7 formino il byte di ordine basso e i bit da b8 a b15 formino il byte di ordine alto. Con una parola di 16 bit, possiamo rappresentare 216 (65536) valori diversi. Questi valori possono essere i seguenti:
- Valori numerici senza segno compresi tra 0 e 65.535.
- I valori numerici con segno nell'intervallo da -32.768 a +32.767
- Qualsiasi tipo di dati con non più di 65.536 valori. In questo modo le parole sono usate principalmente per:
- Valori di dati interi a 16 bit
- Indirizzi di memoria a 16 bit
- Qualsiasi sistema numerico che richiede 16 bit o meno
La parola doppia
Una parola doppia è esattamente come il suo nome ed è composta da due parole. Quindi una quantità di parola doppia è 32 bit . La parola doppia può anche essere divisa in una parola di ordine superiore e una di ordine inferiore, quattro byte o otto nibble ecc.
In questo modo la parola Doppia può rappresentare tutti i tipi di dati diversi. Può essere di seguito:
- Una parola doppia senza segno nell'intervallo da 0 a 4.294.967.295,
- Una parola doppia con segno nell'intervallo da -2.147.483.648 a 2.147.483.647,
- Un valore in virgola mobile a 32 bit
- Oppure qualsiasi altro dato che richieda 32 bit o meno.
Sistema numerico ottale
Il sistema numerico ottale era popolare nei vecchi sistemi informatici ma oggi è usato molto raramente. Tuttavia prenderemo un ideale di sistema ottale solo per conoscenza.
Il sistema ottale si basa sul sistema binario con un limite di 3 bit. Il sistema numerico ottale usa la base 8 e include solo le cifre da 0 a 7. In questo modo qualsiasi altra cifra renderebbe il numero un numero ottale non valido.
I valori ponderati per ciascuna posizione sono riportati nella tabella seguente:
(base)potenza |
85 |
84 |
83 |
82 |
81 |
80 |
Valore |
32768 |
4096 |
512 |
64 |
8 |
1 |
Conversione da binario a ottale
Per convertire un numero binario intero in ottale seguiamo i due passaggi seguenti:
Per prima cosa, dividi il numero binario in sezioni da 3 bit, dall'LSB all'MSB . Quindi converti il numero binario da 3 bit nel suo equivalente ottale. Facciamo un esempio per capirlo meglio. Se abbiamo dato un numero binario, diciamo 11001011010001, da convertire nel sistema numerico ottale, applicheremo i due passaggi sopra indicati su questo numero come segue:
Sezione a 3 bit del numero binario |
011 |
001 |
011 |
010 |
001 |
Numero equivalente |
3 |
1 |
3 |
2 |
1 |
Pertanto il numero ottale, equivalente al numero binario 11001011010001, è 31321.
Conversione da ottale a binario
Per convertire qualsiasi numero ottale intero nel corrispondente numero binario, seguiamo i due passaggi seguenti:
Per prima cosa convertiamo il numero decimale nel suo equivalente binario a 3 bit. Quindi combiniamo le sezioni a 3 bit rimuovendo gli spazi. Facciamo un esempio. Se abbiamo un qualsiasi numero ottale intero 31321(Q) da convertire nel suo numero binario corrispondente, applicheremo i due passaggi precedenti come segue:
Numero equivalente |
3 |
1 |
3 |
2 |
1 |
Sezione a 3 bit del numero binario |
011 |
001 |
011 |
010 |
001 |
Pertanto l' equivalente binario del numero ottale 31321(Q) è 011 0010 1101 0001.
Conversione da ottale a decimale
Per convertire un numero ottale in decimale, moltiplichiamo il valore in ogni posizione per il suo peso ottale e aggiungiamo ciascun valore.
Facciamo un esempio per capirlo meglio. Supponiamo di avere un qualsiasi numero ottale 31321Q da convertire nel suo numero decimale corrispondente. Quindi seguiremo i seguenti passaggi:
3*84 + 1*83 + 3*82 + 2*81 + 1*80 = 3*4096 + 1*512 + 3*64 + 2*8 + 1*1 = 12288 + 512 + 192 + 16 + 1 = 13009
Conversione da decimale a ottale
Convertire il decimale in ottale è leggermente più difficile. Il metodo tipico per convertire da decimale a ottale è la divisione ripetuta per 8. Per questo metodo dividiamo il numero decimale per 8 e scriviamo il resto a lato come cifra meno significativa. Questo processo continua dividendo il quoziente per 8 e scrivendo il resto finché il quoziente non è 0.
Quando si esegue la divisione, i resti, che rappresenteranno l'equivalente ottale del numero decimale, vengono scritti iniziando dalla cifra meno significativa (a destra) e ogni nuova cifra viene scritta nella cifra più significativa successiva (a sinistra) della cifra precedente.
Cerchiamo di capirlo meglio con un esempio. Se abbiamo un numero decimale, diciamo 13009 (abbiamo trovato questo numero decimale dall'esempio precedente e riconvertendolo in numero ottale possiamo anche controllare l'esempio precedente), allora questo metodo è stato descritto nella seguente tabella:
Divisione |
Quoziente |
Resto |
Numero ottale |
13009 / 8 |
1626 |
1 |
1 |
1626 / 8 |
203 |
2 |
21 |
203 / 8 |
25 |
3 |
321 |
25 / 8 |
3 |
1 |
1321 |
3 / 8 |
0 |
3 |
31321 |
Come potete vedere, siamo tornati al numero originale. Questo è ciò che dovremmo aspettarci. Questa tabella serviva per capire la procedura. Ora ripetiamo la stessa conversione per capire il metodo che dovrebbe essere seguito nella pratica per ottenere la facilità di lavoro e anche per risparmiare tempo. In effetti, entrambe sono le stesse cose.
Se disponiamo i resti in base alla direzione della freccia, otteniamo il numero ottale 31321, che ci aspettavamo.
Sistema numerico esadecimale
I numeri esadecimali sono quelli più comunemente utilizzati nel recupero dati o in qualsiasi altro tipo di risoluzione dei problemi del disco o programmazione dell'analisi del disco perché i numeri esadecimali offrono le due seguenti funzionalità:
I numeri esadecimali sono molto compatti. Ed è facile convertire da esadecimale a binario e da binario a esadecimale. Quando calcoleremo molte cose importanti come il numero di cilindri, testine e settori di un disco rigido o utilizzeremo programmi di editor di dischi rigidi per analizzare diverse caratteristiche e problemi, avremo bisogno di una buona conoscenza del sistema esadecimale. Il sistema esadecimale è basato sul sistema binario utilizzando un confine Nibble o a 4 bit.
Il sistema numerico esadecimale usa la base 16 e include solo le cifre da 0 a 9 e le lettere A, B, C, D, E e F. Usiamo H con il numero per indicare qualsiasi numero esadecimale. La seguente tabella mostra la rappresentazione di vari sistemi numerici, differenziandoli tra loro:
Binario | Ottale | Decimale | Esagono |
0000B | 00Q | 00 | ore 00:00 |
0001B | 01Q | 01 | 01H |
0010B | 02Q | 02 | ore 02:00 |
0011B | 03Q | 03 | ore 03:00 |
0100B | 04Q | 04 | ore 04:00 |
0101B | 05Q | 05 | ore 05:00 |
0110B | 06Q | 06 | ore 06:00 |
0111B | 07Q | 07 | ore 07:00 |
1000 miliardi | 10Q | 08 | ore 08:00 |
1001B | 11Q | 09 | ore 09:00 |
1010B | 12Q | 10 | 0AH |
1011B | 13Q | 11 | 0BH |
1100B | 14Q | 12 | 0CH |
1101B | 15Q | 13 | 0DH |
1110B | 16Q | 14 | 0EH |
1111B | 17Q | 15 | 0FH |
1 0000B | 20Q | 16 | ore 10.00 |
Questa tabella fornisce tutte le informazioni di cui potresti aver bisogno per convertire da una base numerica a un'altra i valori decimali da 0 a 16.
I valori ponderati per ciascuna posizione per i numeri esadecimali sono stati mostrati nella seguente tabella:
(Base)potenza |
163 |
162 |
161 |
160 |
Valore |
4096 |
256 |
16 |
1 |
Conversione da binario a esadecimale
Per convertire un numero binario in formato esadecimale, prima di tutto aggiungi degli zeri iniziali al numero binario sul lato più a sinistra per assicurarti che il numero binario contenga multipli di quattro bit. Dopodiché segui i due passaggi seguenti:
Per prima cosa, suddividi il numero binario in sezioni da 4 bit dal LSB al MSB. Quindi converti il numero binario da 4 bit nel suo equivalente esadecimale. Facciamo un esempio per comprendere meglio il metodo. Supponiamo di avere un numero binario qualsiasi 100 1110 1101 0011 da convertire nel suo numero esadecimale corrispondente. Quindi applicheremo i due passaggi precedenti come mostrato di seguito:
Sezione numerica binaria a 4 bit |
0100 |
1110 |
1101 |
0011 |
Valore esadecimale |
4 |
E |
D |
3 |
Pertanto il valore esadecimale corrispondente al numero binario 100 1110 1101 0011 è 4ED3.
Conversione da esadecimale a binario
Per convertire un numero esadecimale in un numero binario seguiamo i due passaggi seguenti:
Per prima cosa, converti il numero esadecimale nel suo equivalente binario a 4 bit. Quindi, combina le sezioni a 4 bit rimuovendo gli spazi. Per comprendere meglio la procedura, prendiamo un esempio del numero esadecimale di cui sopra, ovvero 4ED3, e applichiamo questi due passaggi come segue
Valore esadecimale |
4 |
E |
D |
3 |
Sezione numerica binaria a 4 bit |
0100 |
1110 |
1101 |
0011 |
Quindi per il numero esadecimale 4ED3, otteniamo il numero binario corrispondente = 0100 1110 1101 0011
Questa è la risposta attesa.
Conversione da esadecimale a decimale Per convertire da esadecimale a decimale moltiplichiamo il valore in ogni posizione per il suo peso esadecimale e aggiungiamo ogni valore. Facciamo un esempio per comprendere meglio la procedura. Supponiamo di avere un numero esadecimale 3ABE da convertire nel suo numero decimale equivalente. Quindi la procedura sarà la seguente: 3*163 + A*162 + B*161 + E*160 = 3* 4096 + 10* 256 + 11*16 + 14 = 12288 + 2560 + 176 + 14 = 15038
Pertanto il numero decimale equivalente al numero esadecimale 3ABE è 15038.
Conversione da decimale a esadecimale
Per convertire il decimale in esadecimale, il metodo tipico è la divisione ripetuta per 16. Per questo metodo, dividiamo il numero decimale per 16 e scriviamo il resto a lato come cifra meno significativa.
Questo processo continua dividendo il quoziente per 16 e scrivendo il resto finché il quoziente non è 0. Quando si esegue la divisione, i resti che rappresenteranno l'equivalente esadecimale del numero decimale vengono scritti a partire dalla cifra meno significativa (a destra) e ogni nuova cifra viene scritta nella successiva cifra più significativa (a sinistra) della cifra precedente.
Impariamolo con un esempio. Prendiamo il numero decimale 15038 che abbiamo ottenuto dopo la conversione di cui sopra. Con questo possiamo anche controllare la conversione di cui sopra e viceversa.
Divisione |
Quoziente |
Resto |
Numero esadecimale |
15038 / 16 |
939 |
14 ( E H) |
E |
939 / 16 |
58 |
11 ( BH ) |
ESSERE |
58 / 16 |
3 |
10 ( UNA H) |
ABE |
3 / 16 |
0 |
3 ( 3 ore) |
03ABE |
Così otteniamo il numero esadecimale 03ABE H, equivalente al numero decimale 15038 e in questo modo torniamo al numero originale. Questo è ciò che dovremmo aspettarci.
La tabella riportata di seguito può aiutare a effettuare una ricerca rapida della conversione di un numero esadecimale in un numero decimale e viceversa nell'intervallo da 0 a 255 numeri decimali.
In questa tabella quadrata ci sono 16 righe, che iniziano da 0 ad A e ci sono 16 colonne che iniziano anch'esse da 0 ad A. Da questa tabella puoi trovare il valore decimale di qualsiasi numero esadecimale compreso tra 0H e FFH. Ciò significa che il valore decimale del numero dovrebbe essere compreso tra 0 e 255 numeri decimali.
- Trovare il valore decimale per un numero esadecimale dalla tabella sopra: nella tabella sopra, il numero di righe rappresenta la prima cifra esadecimale (cifra esadecimale sinistra) e il numero di colonne rappresenta la seconda cifra esadecimale (cifra esadecimale destra) del numero esadecimale.
Prendiamo un qualsiasi numero esadecimale, diciamo ACH, da convertire nel numero decimale equivalente. Quindi vedremo il valore decimale nella colonna Cth della riga Ath nella tabella e otterremo il valore decimale 172, che è il numero decimale equivalente per il numero esadecimale ACH.
- Trovare il valore esadecimale per il numero decimale dalla tabella sopra: Nella tabella sopra, il numero di righe rappresenta la prima cifra esadecimale (cifra esadecimale sinistra) e il numero di colonne rappresenta la seconda cifra esadecimale (cifra esadecimale destra) del numero esadecimale, quindi se hai un numero decimale da convertire in un numero esadecimale equivalente, cerca il numero nella tabella e trova il valore esadecimale equivalente come segue:
Valore esadecimale per il numero decimale = (Numero riga) (Numero colonna)
Ad esempio, se vuoi trovare il valore esadecimale equivalente per il numero decimale 154, vedi la posizione del numero nella tabella. Il numero 154 è nella nona riga e nella colonna Ath della tabella. Quindi il valore esadecimale equivalente per il numero decimale 154 è 9AH.
Codice ASCII
L'abbreviazione ASCII sta per American Standard Code for Information Interchange. È uno standard di codifica per caratteri, numeri e simboli che è uguale ai primi 128 caratteri del set di caratteri ASCII ma differisce dai caratteri rimanenti. Questi altri caratteri sono solitamente chiamati caratteri ASCII speciali dei caratteri estesi che sono stati definiti da IBM.
I primi 32 caratteri, che sono codici ASCII da 0 a 1FH, formano un set speciale di caratteri non stampabili. Questi caratteri sono chiamati caratteri di controllo perché eseguono varie operazioni di controllo della stampante e del display anziché visualizzare simboli. Questi caratteri sono stati elencati nella tabella dei caratteri ASCII fornita in questo capitolo. Questi caratteri di controllo hanno i seguenti significati:
ZERO (zero):
Nessun carattere. Viene utilizzato per riempire il tempo o lo spazio sulla superficie (come la superficie del piatto) del dispositivo di archiviazione in cui non ci sono dati. Utilizzeremo questo carattere quando faremo programmazione per i wiper di dati (sia distruttivi che non distruttivi) per cancellare lo spazio non allocato in modo che i dati eliminati non possano essere recuperati da nessuno o da nessun programma.
SOH (Inizio della direzione):
Questo carattere viene utilizzato per indicare l'inizio della direzione, che può contenere informazioni sull'indirizzo o sul percorso.
TX (inizio del testo):
Questo carattere viene utilizzato per indicare l'inizio del testo e quindi anche la fine del titolo.
ETX (fine del testo):
Questo carattere viene utilizzato per terminare il testo iniziato con STX.
EOT (fine trasmissione):
Questo carattere indica la fine della trasmissione, che potrebbe aver incluso uno o più "test" con le relative intestazioni.
ENQ (Richiesta di informazioni):
È una richiesta di risposta da una stazione remota. È una richiesta di identificazione di una stazione.
ACK (Riconoscimento):
È un carattere trasmesso da un dispositivo ricevente come risposta affermativa a un sander. Viene utilizzato come risposta positiva ai messaggi di sondaggio.
BEL (Campana):
Viene utilizzato quando c'è bisogno di richiamare l'attenzione umana. Può controllare dispositivi di allarme o di attenzione. Puoi sentire un tono di campanello dagli altoparlanti, collegati al tuo computer quando digiti questo carattere nel prompt dei comandi come indicato di seguito:
C:\> Echo ^G
Qui ^G viene stampato tramite la combinazione di tasti Ctrl + G.
BS (tasto di ritorno):
Questo carattere indica il movimento del meccanismo di stampa o del cursore del display all'indietro di una posizione.
HT (scheda orizzontale):
Indica il movimento del meccanismo di stampa o del cursore del display in avanti verso la successiva "Tab" preassegnata o posizione di arresto.
LF (avanzamento riga):
Indica lo spostamento del meccanismo di stampa o del cursore di visualizzazione all'inizio della riga successiva.
VT (scheda verticale):
Indica lo spostamento del meccanismo di stampa o del cursore del display sulla successiva di una serie di linee di stampa preassegnate.
FF (avanzamento pagina):
Indica lo spostamento del meccanismo di stampa o del cursore del display verso la posizione di partenza della pagina successiva, da o sullo schermo successivo.
CR (ritorno a capo):
Indica lo spostamento del meccanismo di stampa o del cursore del display verso la posizione iniziale della stessa riga.
SO (Cambio di direzione):
Indica che le combinazioni di codice che seguono devono essere interpretate come esterne al set di caratteri standard finché non viene raggiunto un carattere Shift In.
Io (cambio):
Indica che le combinazioni di codice che seguono devono essere interpretate secondo il set di caratteri standard.
DLE (Escape del collegamento dati):
È un carattere che modifica il significato di uno o più caratteri contigui successivi. Può fornire un controllo supplementare o consentire l'invio di caratteri di dati aventi qualsiasi combinazione di bit.
DC1, DC2, DC3 e DC4 (controlli dispositivo):
Si tratta di caratteri per il controllo di dispositivi ausiliari o di funzioni speciali del terminale.
NAK (Riconoscimento negativo):
È un carattere trasmesso da un dispositivo ricevente come risposta negativa a un mittente. Viene utilizzato come risposta negativa al messaggio di polling.
SYN (sincrono/inattivo):
viene utilizzato da un sistema di trasmissione sincrona per ottenere la sincronizzazione quando non vengono inviati dati; un sistema di trasmissione sincrona può inviare caratteri SYN in modo continuo.
ETB (blocco di fine trasmissione):
Questo carattere indica la fine di un blocco di dati per scopi di comunicazione. Viene utilizzato per bloccare i dati, dove la struttura del blocco non è necessariamente correlata al formato di elaborazione.
CAN (Annulla): indica che i dati che lo precedono in un messaggio o in un blocco devono essere ignorati, solitamente perché è stato rilevato un errore.
EM (End of Medium): indica la fine fisica di un nastro, la superficie (solitamente del piatto di un disco) o di un altro supporto, oppure la fine della porzione richiesta o utilizzata del supporto.
SUB (Sostituto): è un sostituto di un carattere che risulta errato o non valido.
ESC (Escape): è un carattere che ha lo scopo di fornire un'estensione del codice, in quanto fornisce un significato alternativo a un numero specificato di caratteri successivi.
FS (File Separator): questo carattere viene utilizzato come carattere separatore di file.
GS (separatore di gruppo): viene utilizzato come carattere separatore di gruppo.
RS (Record Separator): viene utilizzato come carattere separatore di record.
Stati Uniti (separatore unito):
È un carattere separatore unito.
Il secondo gruppo di 32 codici di caratteri ASCII ha vari simboli di punteggiatura, caratteri speciali e cifre numeriche. I caratteri più notevoli in questo gruppo includono quanto segue:
carattere spazio (codice ASCII 20H) cifre numeriche da 0 a 9 (codici ASCII da 30h a 39h) simboli matematici e logici
SP (Spazio):
È un carattere non stampabile utilizzato per separare le parole, per spostare il meccanismo di stampa o per visualizzare il cursore in avanti di una posizione.
Il terzo gruppo di 32 caratteri ASCII è il gruppo di caratteri alfabetici maiuscoli. I codici ASCII per i caratteri dalla A alla Z sono compresi nell'intervallo da 41H a 5AH. Poiché ci sono solo 26 caratteri alfabetici diversi, i restanti sei codici contengono vari simboli speciali.
Il quarto gruppo di 32 codici di caratteri ASCII è costituito da simboli alfabetici minuscoli, cinque simboli speciali aggiuntivi e un altro carattere di controllo delete.
DEL (Elimina):
Viene utilizzato per cancellare i caratteri indesiderati, o meglio, per eliminarli.
Sono state mostrate due tabelle successive, che rappresentano i codici ASCII e i caratteri estesi. La prima tabella rappresenta tutti e quattro i gruppi di diversi tipi di caratteri descritti. Questa tabella è una rappresentazione dei dati e una tabella ASCII come mostrato di seguito:
Rappresentazione dei dati e tabella dei codici ASCII:
ESAGONO | DIC. | CHR | CTRL |
---|
00 | 0 | NULL | ^@ |
01 | 1 | SOH | ^UNA |
02 | 2 | STX | ^B |
03 | 3 | ETX | ^C |
04 | 4 | Fine del mese | ^D |
05 | 5 | Domandare | ^E |
06 | 6 | Riconoscimento | ^E |
07 | 7 | BEL | ^S |
08 | 8 | Laurea triennale | ^E |
09 | 9 | Altezza | ^io |
0A | 10 | LF | ^J |
0B | 11 | Vermont | Ciao! |
0 °C | 12 | FF | ^L |
0D | 13 | CR | ^M |
0E | 14 | COSÌ | ^N |
0F | 15 | E | ^O |
10 | 16 | SECONDO | ^P |
11 | 17 | DC1 | ^Q |
12 | 18 | DC2 | ^R |
13 | 19 | DC3 | ^S |
14 | 20 | DC4 | ^T |
15 | 21 | RICERCATO | ^U |
16 | 22 | IL SUO | ^V |
17 | 23 | ETB | ^In realtà |
18 | 24 | POTERE | ^X |
19 | 25 | IN | ^E |
1A | 26 | SUB | ^Z |
1B | 27 | ESC |
1C | 28 | Vendita al dettaglio |
1D | 29 | GS |
1E | 30 | RS |
1F | 31 | NOI |
ESAGONO | DIC. | CHR |
---|
20 | 32 | SP |
21 | 33 | ! |
22 | 34 | " |
23 | 35 | # |
24 | 36 | $ |
25 | 37 | % |
26 | 38 | e |
27 | 39 | ' |
28 | 40 | ( |
29 | 41 | ) |
2A | 42 | * |
2B | 43 | + |
2C | 44 | , |
2D | 45 | - |
2E | 46 | . |
2F | 47 | / |
30 | 48 | 0 |
31 | 49 | 1 |
32 | 50 | 2 |
33 | 51 | 3 |
34 | 52 | 4 |
35 | 53 | 5 |
36 | 54 | 6 |
37 | 55 | 7 |
38 | 56 | 8 |
39 | 57 | 9 |
3A | 58 | : |
3B | 59 | ; |
3C | 60 | < |
3D | 61 | = |
3E | 62 | > |
3F | 63 | ? |
ESAGONO | DIC. | CHR |
---|
40 | 64 | @ |
41 | 65 | UN |
42 | 66 | B |
43 | 67 | C |
44 | 68 | D |
45 | 69 | E |
46 | 70 | F |
47 | 71 | G |
48 | 72 | H |
49 | 73 | IO |
4A | 74 | J |
4B | 75 | E |
4C | 76 | L |
4D | 77 | M |
4E | 78 | N |
4F | 79 | IL |
50 | 80 | P |
51 | 81 | Q |
52 | 82 | R |
53 | 83 | S |
54 | 84 | T |
55 | 85 | IN |
56 | 86 | In |
57 | 87 | IN |
58 | 88 | X |
59 | 89 | E |
5A | 90 | CON |
5B | 91 | [ |
5C | 92 | \ |
5D | 93 | ] |
5E | 94 | ^ |
5F | 95 | _ |
ESAGONO | DIC. | CHR |
---|
60 | 96 | ` |
61 | 97 | UN |
62 | 98 | B |
63 | 99 | C |
64 | 100 | D |
65 | 101 | E |
66 | 102 | F |
67 | 103 | G |
68 | 104 | H |
69 | 105 | io |
6A | 106 | J |
6B | 107 | io |
6C | 108 | l |
6D | 109 | M |
6E | 110 | N |
6F | 111 | IL |
70 | 112 | P |
71 | 113 | Q |
72 | 114 | R |
73 | 115 | S |
74 | 116 | T |
75 | 117 | In |
76 | 118 | In |
77 | 119 | In |
78 | 120 | X |
79 | 121 | E |
7A | 122 | Con |
7B | 123 | {[} |
7C | 124 | | |
7D | 125 | } |
7E | 126 | ~ |
7F | 127 | DEL |
La tabella seguente mostra il set di 128 caratteri ASCII speciali che sono spesso chiamati caratteri ASCII estesi:
ESAGONO | DIC. | CHR |
---|
80 | 128 | Che cosa |
81 | 129 | ü |
82 | 130 | E |
83 | 131 | UN |
84 | 132 | UN |
85 | 133 | ha |
86 | 134 | A |
87 | 135 | Che cosa |
88 | 136 | Volere |
89 | 137 | S |
8A | 138 | è |
8B | 139 | io |
8C | 140 | Q |
8D | 141 | In |
8E | 142 | UN |
8F | 143 | OH |
90 | 144 | E |
91 | 145 | OH |
92 | 146 | Oh, oh |
93 | 147 | Ombrello |
94 | 148 | Lui |
95 | 149 | NO |
96 | 150 | E |
97 | 151 | ù |
98 | 152 | E |
99 | 153 | LUI |
9A | 154 | Io |
9B | 155 | ¢ |
9C | 156 | £ |
9D | 157 | ¥ |
9E | 158 | ₧ |
9F | 159 | ƒ |
A0 | 160 | SU |
A1 | 161 | In |
La 2 | 162 | da |
La A3 | 163 | eh |
La4 | 164 | N |
ESAGONO | DIC. | CHR |
---|
La 5a | 165 | N |
La A6 | 166 | ª |
La A7 | 167 | º |
A8 | 168 | ¿ |
La A9 | 169 | ⌐ |
AAA | 170 | ¬ |
A.B. | 171 | ½ |
AC | 172 | ¼ |
A.D | 173 | ¡ |
MA | 174 | « |
DI | 175 | » |
B0 | 176 | ░ |
B1 | 177 | ▒ |
La B2 | 178 | ▓ |
Si3 | 179 | │ |
Si4 | 180 | ┤ |
Si5 | 181 | ╡ |
Si6 | 182 | ╢ |
Si7 | 183 | ╖ |
Si8 | 184 | ╕ |
B9 | 185 | ╣ |
NON | 186 | ║ |
BB | 187 | ╗ |
A.C | 188 | ╝ |
BD | 189 | ╜ |
ESSERE | 190 | ╛ |
Ragazzo | 191 | ┐ |
C0 | 192 | └ |
C1 | 193 | ┴ |
C2 | 194 | ┬ |
C3 | 195 | ├ |
C4 | 196 | ─ |
C5 | 197 | ┼ |
C6 | 198 | ╞ |
C7 | 199 | ╟ |
C8 | 200 | ╚ |
C9 | 201 | ╔ |
ESAGONO | DIC. | CHR |
---|
QUELLO | 202 | ╩ |
CB | 203 | ╦ |
CC | 204 | ╠ |
CD | 205 | ═ |
QUESTO | 206 | ╬ |
CF | 207 | ╧ |
D0 | 208 | ╨ |
La 1a | 209 | ╤ |
La D2 | 210 | ╥ |
La D3 | 211 | ╙ |
Giorno 4 | 212 | ╘ |
D5 | 213 | ╒ |
Giorno 6 | 214 | ╓ |
Giorno 7 | 215 | ╫ |
Giorno 8 | 216 | ╪ |
Giorno 9 | 217 | ┘ |
E | 218 | ┌ |
BD | 219 | █ |
Distretto di Columbia | 220 | ▄ |
GG | 221 | ▌ |
DA | 222 | ▐ |
D.F. | 223 | ▀ |
E0 | 224 | UN |
E1 | 225 | SS |
E2 | 226 | Con |
E3 | 227 | N |
E4 | 228 | Con |
E5 | 229 | con |
E6 | 230 | µ |
E7 | 231 | T |
E8 | 232 | F |
E9 | 233 | IO |
SÌ | 234 | Pensiero |
E.B. | 235 | G |
Unione Europea | 236 | ∞ |
ED | 237 | F |
EE | 238 | E |
ESADECIMALE | DICEMBRE | Risorse umane |
---|
SE | 239 | ∩ |
C0 è | 240 | ≡ |
Formula 1 | 241 | ± |
La F2 | 242 | ≥ |
La F3 | 243 | ≤ |
F4 | 244 | ⌠ |
F5 | 245 | ⌡ |
F6 | 246 | ÷ |
F7 | 247 | ≈ |
F8 | 248 | ° |
F9 | 249 | ∙ |
MA | 250 | · |
Pagina Facebook | 251 | √ |
FC | 252 | ⁿ |
FD | 253 | ² |
FE | 254 | ■ |
FF | 255 | |
Alcuni termini importanti del sistema numerico che vengono spesso utilizzati per rappresentare e memorizzare i dati
La tabella seguente mostra i vari prefissi utilizzati come prefissi frazionari e aumentativi:
Byte:
L'uso più importante di un byte è la memorizzazione di un codice di carattere. Ne abbiamo già parlato in precedenza.
Kilobyte
Tecnicamente, un kilobyte equivale a 1024 byte, ma spesso viene utilizzato impropriamente come sinonimo di 1000 byte. Nei sistemi decimali, il chilo equivale a 1000, ma nei sistemi binari, il chilo equivale a 1024 (210).
Un kilobyte è solitamente indicato come K o Kb. Per distinguere tra K decimale (1000) e K binario (1024), lo standard IEEE (Institute of Electrical and Electronics Engineers) ha proposto di seguire la convenzione di utilizzare la lettera minuscola k per il chilo decimale e la lettera maiuscola K per il chilo binario, ma questa convenzione non è affatto seguita rigorosamente.
Megabyte
Un megabyte viene utilizzato per descrivere l'archiviazione di dati pari a 1.048.576 (220) byte, ma quando viene utilizzato per descrivere velocità di trasferimento dati, come MB/s, si riferisce a un milione di byte. Di solito il megabyte è abbreviato in M o MB.
Gigabyte
Un gigabyte viene utilizzato per descrivere uno spazio di archiviazione di 1.073.741.824 (230) byte e un gigabyte equivale a 1.024 megabyte. Gigabyte è solitamente abbreviato in G o GB.
Terabyte
Un terabyte equivale a 1.099.511.627.776 (240) byte, ovvero circa 1 trilione di byte. Un terabyte è talvolta descritto come 1012 (1.000.000.000.000) byte, che equivale esattamente a un trilione.
Petabyte
Un petabyte è descritto come 1.125.899.906.842.624 (250) byte. Un petabyte equivale a 1.024 terabyte.
Exabyte
Un exabyte è descritto come 1.152.921.504.606.846.976 (260) byte. Un exabyte equivale a 1.024 petabyte.
Zettabyte
Uno zettabyte è descritto come 1.180.591.620.717.411.303.424 (270) byte, che equivale a circa 1.021 (1.000.000.000.000.000.000.000) byte. Uno zettabyte equivale a 1,024 exabyte.
Yottabyte
Uno Yottabyte è descritto come 1.208.925.819.614.629.174.706.176 (280) byte, che equivale a circa 1.024 (1.000.000.000.000.000.000.000.000) byte. Uno yottabyte equivale a 1,024 zettabyte.
Condizioni generali di archiviazione dei dati
Per indicare i termini indicati in precedenza per i diversi gruppi di bit di dati vengono utilizzati nomi diversi. Nella tabella seguente sono elencati alcuni dei più comunemente utilizzati:
Scadenza |
Numero di bit |
Pagina / Numero / Bandiera |
1 |
Morso / Morso |
4 |
Byte/Carattere |
8 |
Parola |
16 |
Parola doppia / Parola lunga |
32 |
Parola molto lunga |
64 |