Capitolo – 4
Sistemi numerici
Introduzione
È molto comune nella programmazione del recupero dati o in qualsiasi altra programmazione per la risoluzione dei problemi del disco gestire contemporaneamente diversi tipi di sistemi numerici per eseguire una singola attività o anche un lavoro molto piccolo come il calcolo delle posizioni specifiche degli MBR estesi ) in termini di CHS (Cylinders, Heads and Sectors) e queste posizioni guidano il programmatore attraverso le operazioni.
Probabilmente la maggior parte dei programmatori principianti incontra il problema o la confusione mentre converte diversi tipi di sistemi numerici l'uno nell'altro quando tenta di imparare la programmazione a livello di sistema basata sul linguaggio assembly e quando è necessario l'uso dei sistemi di numeri binari ed esadecimali.
In questo capitolo discuteremo molti concetti importanti, inclusi i sistemi di numerazione binari, decimali, esadecimali e l'organizzazione dei dati binari come la conversione di bit, nibble, byte, parole e parole doppie, ecc. e molti altri argomenti correlati di sistemi numerici.
La maggior parte dei moderni sistemi informatici non rappresenta valori numerici utilizzando il sistema decimale, ma generalmente utilizza un sistema di numerazione binario o in complemento a 2.
Ci sono quattro basi numeriche comunemente usate nella programmazione, Binario, ottale, decimale ed esadecimale. Tuttavia la maggior parte delle volte incontreremo sistemi di numeri binari, decimali ed esadecimali. Questi sistemi numerici sono stati differenziati in base al loro numero di base.
Ogni sistema di numerazione ha il proprio numero di base e simbolo di rappresentazione. Ho presentato questi quattro numeri nella tabella seguente:
Name of Number System |
Base Number |
Symbol Used for Representation |
Binary |
2 |
B |
Octal |
8 |
Q or O |
Decimal |
10 |
D or None |
Hexadecimal |
16 |
H |
Sistema di numeri decimali
Il sistema dei numeri decimali utilizza la base 10 e include le cifre da 0 a 9. Non confonderti, è il sistema numerico comune che utilizziamo nella nostra vita quotidiana per calcolare le cose. I valori ponderati dei poteri per ciascuna posizione saranno i seguenti:
In questo modo se ho un numero decimale 218 e voglio rappresentarlo in modo sopra il numero 218 sarà rappresentato nel modo seguente:
2 * 102 + 1 * 101 + 8 * 100
= 2 * 100 + 1 * 10 + 8 * 1
= 200 + 10 + 8
= 218
Ora prendiamo un esempio di qualsiasi numero decimale frazionario. Abbiamo un numero 821.128. Ogni cifra che compare a sinistra della virgola rappresenta un valore compreso tra zero e nove e la potenza di dieci è rappresentata dalla sua posizione nel numero (a partire da 0).
Le cifre che appaiono a destra del punto decimale rappresentano un valore compreso tra zero e nove volte 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 di numeri binari
Oggi la maggior parte dei moderni sistemi informatici 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, la tensione 0V è solitamente rappresentata da 0 logico e la tensione +3,3 V o +5V è rappresentata da 1 logico. Quindi con due livelli possiamo rappresentare esattamente due valori diversi. Questi potrebbero essere due valori diversi, ma per convenzione utilizziamo i valori 0 e 1.
Dato che esiste una corrispondenza tra i livelli logici utilizzati dal computer e le due cifre utilizzate nel sistema di numerazione binaria, non dovrebbe sorprendere che i computer utilizzino il sistema binario.
Il sistema dei numeri binari funziona come il sistema dei numeri decimali tranne che il sistema dei numeri binari utilizza la base 2 e include solo le cifre 0 e 1 e l'uso di qualsiasi altra cifra renderebbe il numero un numero binario non valido.
I valori ponderati per ciascuna posizione sono rappresentati come segue:
La tabella seguente mostra la rappresentazione del numero binario rispetto ai numeri decimali:
Decimal Number |
Binary Number Representation |
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 in caso di numeri decimali, ogni tre cifre decimali sono separate da una virgola per facilitare la lettura dei numeri più grandi. 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 in modo che possa essere più facile leggere i numeri binari ma in caso di numeri binari aggiungeremo uno spazio ogni quattro cifre partendo dalla cifra meno significativa in poi a sinistra della virgola decimale.
Ad esempio se il valore binario è 1010011001101011, verrà scritto come 1010 0110 0110 1011.
Conversione da numero binario a numero decimale
Per convertire il numero binario nel numero decimale, moltiplichiamo ogni cifra per la sua posizione ponderata e aggiungiamo 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 decimale a binario
Per convertire qualsiasi numero decimale nel suo sistema di numeri binari, il metodo generale consiste nel 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 rilasciando il resto precedente fino a quando il quoziente è 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.
Facciamo un esempio. Considera il numero 2671. La conversione binaria per il numero 2671 è stata data nella tabella seguente.
Division |
Quotient |
Remainder |
Binary Number |
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 |
1010 0110 1111 |
Questa tabella serve a chiarire ogni passaggio della conversione, tuttavia in pratica e per ottenere la facilità e la velocità di conversione puoi seguire il seguente modo per ottenere i risultati.
Let 1980 è 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 numeri binari
In genere scriviamo numeri binari come una sequenza di bit. I "bit" sono l'abbreviazione di "cifre binarie" in una macchina. Esistono limiti di formato definiti per questi bit. Questi limiti di formato sono stati rappresentati nella tabella seguente:
Name |
Size in bits |
Example |
Bit |
1 |
1 |
Nibble |
4 |
0101 |
Byte |
8 |
0000 0101 |
Word |
16 |
0000 0000 0000 0101 |
Double Word |
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 zeri iniziali per regolare il numero binario su un limite di dimensione desiderato.
Ad esempio, possiamo rappresentare il numero 7 come in diversi casi come mostrato nella tabella:
|
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
Bit |
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
1 |
1 |
Nibble |
|
|
|
|
|
|
|
|
|
|
|
|
0 |
1 |
1 |
1 |
Byte |
|
|
|
|
|
|
|
|
0 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
Word |
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 del bit zero e a ciascun bit a sinistra viene assegnato il numero di bit successivo successivo, come mostrato nella tabella sopra.
Il bit zero viene generalmente indicato come il bit meno significativo o LSB e il bit più a sinistra è generalmente chiamato il bit più significativo o MSB. Facci sapere di questi formati di rappresentazione:
Il bit
Un bit è l'unità di dati più piccola su un computer binario. Un singolo bit è in grado di rappresentare un solo valore, 0 o 1. Se stai usando un bit per rappresentare un valore booleano (vero/falso), quel bit rappresenta vero o falso.
Il bocconcino
Il Nibble è particolarmente presente nell'area di interesse quando si parla di sistemi numerici, numeri BCD (Binary Coded Decimal) e/o esadecimali (base 16).
Un nibble è una raccolta di bit su un limite di 4 bit. Occorrono quattro bit per rappresentare una singola cifra BCD o esadecimale. Con un bocconcino possiamo rappresentare fino a 16 valori distinti.
Nel caso di 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. BCD utilizza dieci cifre diverse (0, 1, 2, 3, 4, 5, 6, 7, 8, 9) e richiede quattro bit.
In effetti, qualsiasi sedici valori distinti possono essere rappresentati con un bocconcino, ma le cifre esadecimali e BCD sono gli elementi principali che possiamo rappresentare con un singolo bocconcino. La rappresentazione a livello di bit di nibble sarà la seguente:
Il byte
Il Byte è la struttura dati più importante utilizzata dal microprocessore 80x86. Un byte è costituito da otto bit ed è il più piccolo elemento di dati indirizzabile nel microprocessore. La memoria principale e gli indirizzi I/O nel computer sono tutti indirizzi di byte e quindi l'elemento più piccolo a cui è possibile accedere individualmente da un programma a 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 carattere. I bit in un byte sono numerati dal bit zero (b0) al sette (b7) come segue:
Il bit 0 (b0) è il bit di ordine basso o il bit meno significativo e il bit 7 (b7) è il bit di ordine superiore o il bit più significativo del byte.
Come qui vediamo che un byte contiene esattamente due nibble in cui i bit da b0 a b3 comprendono il nibble di basso ordine ei bit da b4 a b7 formano il nibble di alto livello.
Dato che un byte contiene esattamente due nibble, i valori dei byte richiedono due cifre esadecimali.
Poiché il computer moderno tradizionale è una macchina indirizzabile a byte, risulta essere più efficiente manipolare un intero byte rispetto a un singolo bit o nibble.
Questo è il motivo per cui la maggior parte dei programmatori utilizza un intero byte per rappresentare i 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 caratteri ASCII
- E altri tipi di dati speciali che richiedono non più di 256 valori diversi poiché molti tipi di dati hanno meno di 256 elementi, quindi otto bit sono generalmente sufficienti.
La Parola
Una parola è un gruppo di 16 bit. Ma tradizionalmente il limite per una parola è definito come 16 bit o la dimensione del bus dati per il processore e una doppia parola è due parole. Quindi una Parola e una Doppia Parola non sono di dimensioni fisse ma variano da sistema a sistema a seconda del processore. Tuttavia, per la lettura concettuale, definiremo una parola come due byte.
Quando vediamo una parola a livello di bit, sarà numerata come i bit di una parola a partire dal bit zero (b0) fino a quindici (b15). La rappresentazione a livello di bit sarà la seguente:
Dove bit 0 è l'LSB (bit meno significativo) e bit 15 è l'MSB (bit più significativo). Quando è necessario fare riferimento agli altri bit in una parola, il loro numero di posizione del bit viene utilizzato per fare riferimento a loro.
In questo modo una parola contiene esattamente due byte tali che dal Bit b0 al Bit b7 formano il byte di ordine basso e i bit da b8 a b15 formano il byte di ordine superiore. Con una parola di 16 bit, possiamo rappresentare 216 (65536) valori diversi. Questi valori possono essere dei seguenti:
- I valori numerici senza segno nell'intervallo da 0 a 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 richieda 16 bit o meno
La doppia parola
Una doppia parola corrisponde esattamente al suo nome ed è composta da due parole. Pertanto una quantità di parole doppie è di 32 bit. La doppia parola può anche essere divisa in una parola di ordine superiore e una parola di ordine inferiore, quattro byte o otto nibble ecc.
In questo modo la parola doppia può rappresentare tutti i tipi di dati diversi. Potrebbe essere dei seguenti:
- Una doppia parola senza segno nell'intervallo da 0 a 4.294.967.295,
- Una doppia parola con segno nell'intervallo da -2.147.483.648 a 2.147.483.647,
- Un valore in virgola mobile a 32 bit
- O qualsiasi altro dato che richiede 32 bit o meno.
Sistema di numeri ottali
Il sistema dei numeri ottali era popolare nei vecchi sistemi informatici, ma oggi è usato molto raramente. Tuttavia, prenderemo un ideale del sistema ottale solo per conoscenza.
Il sistema Octal si basa sul sistema binario con un limite di 3 bit. Il sistema di numeri ottali utilizza 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 i seguenti mostrati nella tabella:
(base)power |
85 |
84 |
83 |
82 |
81 |
80 |
Value |
32768 |
4096 |
512 |
64 |
8 |
1 |
Conversione da binario a ottale
Per convertire un numero binario intero in ottale, seguiamo i due passaggi seguenti:
Prima suddividi il numero binario in sezioni a 3 bit da LSB a MSB. E quindi convertire il numero binario a 3 bit nel suo equivalente ottale. Facciamo un esempio per capirlo meglio. Se abbiamo fornito un numero binario, ad esempio 11001011010001, da convertire nel sistema di numeri ottali, applicheremo i due passaggi precedenti a questo numero come segue:
3-bit Section of Binary Number |
011 |
001 |
011 |
010 |
001 |
Equivalent number |
3 |
1 |
3 |
2 |
1 |
Quindi il numero ottale, equivalente a Il numero binario 11001011010001 è 31321.
Conversione da ottale a binario
Per convertire qualsiasi numero ottale intero nel numero binario corrispondente, seguiamo i due passaggi seguenti:
Per prima cosa converti il numero decimale nel suo equivalente binario a 3 bit. E poi unisci le sezioni a 3 bit rimuovendo gli spazi. Facciamo un esempio. Se abbiamo un numero ottale intero 31321(Q) da convertire nel suo numero binario corrispondente, applicheremo sopra i due passaggi come segue:
Equivalent number |
3 |
1 |
3 |
2 |
1 |
3-bit Section of Binary Number |
011 |
001 |
011 |
010 |
001 |
Quindi l'equivalente binario per il numero ottale 31321(Q) è 011 0010 1101 0001.
Conversione da ottale a decimale
Per convertire qualsiasi numero ottale in Decimale, moltiplichiamo il valore in ciascuna posizione per il suo peso ottale e aggiungiamo ciascun valore.
Facciamo un esempio per capirlo meglio. Si abbia un qualsiasi numero ottale 31321Q da convertire nel corrispondente numero decimale. 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 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 viene continuato dividendo il quoziente per 8 e scrivendo il resto fino a quando il quoziente è 0.
Quando si esegue la divisione, i resti che rappresenteranno l'equivalente ottale del numero decimale vengono scritti a partire dalla cifra meno significativa (a destra) e ogni nuova cifra viene scritta alla cifra successiva più significativa (a sinistra) della precedente cifra.
Comprendiamolo meglio con un esempio. Se abbiamo un numero decimale, diciamo 13009 (abbiamo trovato questo numero decimale dall'esempio sopra e riconvertendolo in numero ottale possiamo anche controllare l'esempio precedente.) allora questo metodo è stato descritto nella tabella seguente:
Division |
Quotient |
Remainder |
Octal Number |
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 puoi vedere, siamo tornati con il numero originale. Questo è ciò che dovremmo aspettarci. Questa tabella serviva per capire la procedura. Ora ripetiamo la stessa conversione per capire il metodo da seguire in pratica per ottenere la facilità di lavorare e anche per risparmiare tempo. Entrambe sono le stesse cose in effetti.
Quando disponiamo i resti secondo la direzione della freccia, otteniamo il numero ottale 31321, che ci aspettavamo.
Sistema di numeri esadecimali
I numeri esadecimali sono più comunemente usati nel nostro recupero dati o in qualsiasi altro tipo di risoluzione dei problemi del disco o nella programmazione dell'analisi del disco perché i numeri esadecimali offrono le due funzionalità seguenti:
I numeri esadecimali sono molto compatti. Ed è facile convertire da esadecimale a binario e da binario a esadecimale. Quando calcoleremo molte cose importanti come Numero di Cilindri, Teste e Settori di un disco rigido o utilizzeremo programmi di editor di dischi rigidi per analizzare diverse caratteristiche e problemi, avremo bisogno della buona conoscenza del sistema Hex. Il sistema esadecimale si basa sul sistema binario che utilizza un limite Nibble o 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 denotare qualsiasi numero esadecimale. La tabella seguente mostra la rappresentazione di vari sistemi numerici, differenziandoli tra loro:
Binary |
Octal |
Decimal |
Hex |
0000B |
00Q |
00 |
00H |
0001B |
01Q |
01 |
01H |
0010B |
02Q |
02 |
02H |
0011B |
03Q |
03 |
03H |
0100B |
04Q |
04 |
04H |
0101B |
05Q |
05 |
05H |
0110B |
06Q |
06 |
06H |
0111B |
07Q |
07 |
07H |
1000B |
10Q |
08 |
08H |
1001B |
11Q |
09 |
09H |
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 |
10H |
Questa tabella fornisce tutte le informazioni di cui potresti aver bisogno per convertire da una base numerica a un'altra per i valori decimali da 0 a 16.
I valori ponderati per ciascuna posizione per i numeri esadecimali sono stati mostrati nella tabella seguente:
(Base)power |
163 |
162 |
161 |
160 |
Value |
4096 |
256 |
16 |
1 |
Conversione da binario a esadecimale
Per convertire un numero binario in formato esadecimale, prima di tutto riempi il numero binario con zeri iniziali sul lato più a sinistra per assicurarti che il numero binario contenga multipli di quattro bit. Dopodiché, segui i due passaggi seguenti:
In primo luogo, suddividi il numero binario in sezioni a 4 bit dall'LSB all'MSB. E quindi convertire il numero binario a 4 bit nel suo equivalente esadecimale. Facciamo un esempio per capire meglio il metodo. Si abbia un qualsiasi numero binario 100 1110 1101 0011 da convertire nel corrispondente numero esadecimale. Quindi applicheremo sopra i due passaggi come mostrato di seguito:
4-bit binary number section |
0100 |
1110 |
1101 |
0011 |
Hexadecimal value |
4 |
E |
D |
3 |
Quindi 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:
In primo luogo, converti il numero esadecimale nel suo equivalente binario a 4 bit. E poi unisci le sezioni a 4 bit rimuovendo gli spazi. Per comprendere meglio la procedura prendiamo un esempio del numero esadecimale sopra, ovvero 4ED3 e applichiamo su di esso questi due passaggi come segue
Hexadecimal value |
4 |
E |
D |
3 |
4-bit binary number section |
0100 |
1110 |
1101 |
0011 |
Quindi per il numero esadecimale 4ED3, otteniamo il numero binario corrispondente = 0100 1110 1101 0011
Questa è la risposta prevista. Conversione da esadecimale a decimale Per convertire da esadecimale a decimale, moltiplichiamo il valore in ciascuna posizione per il suo peso esadecimale e aggiungiamo ciascun valore. Facciamo un esempio per capire meglio la procedura. Supponiamo di avere qualsiasi 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
Quindi il numero decimale equivalente per il numero esadecimale 3ABE è 15038.
Conversione da decimale a esadecimale
Per convertire decimali in esadecimali, il metodo tipico è 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 viene continuato dividendo il quoziente per 16 e scrivendo il resto fino a quando il quoziente è 0. Quando si esegue la divisione, i resti che rappresenteranno l'equivalente esadecimale del numero decimale vengono scritti iniziando dalla cifra meno significativa (a destra ) e ogni nuova cifra viene scritta sulla cifra successiva più significativa (a sinistra) della cifra precedente.
Impariamolo con l'esempio. Prendiamo il numero decimale 15038 che abbiamo ottenuto dopo la conversione sopra. In questo modo possiamo anche verificare la conversione di cui sopra e viceversa.
Division |
Quotient |
Remainder |
Hex Number |
15038 / 16 |
939 |
14 (E H) |
E |
939 / 16 |
58 |
11 (B H) |
BE |
58 / 16 |
3 |
10 (A H) |
ABE |
3 / 16 |
0 |
3 (3 H) |
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 ottenere la ricerca rapida della conversione da numero esadecimale a numero decimale e viceversa nell'intervallo da 0 a 255 numeri decimali.
In questa tabella Square ci sono 16 righe, da 0 ad A e ci sono 16 colonne anche da 0 ad A. Da questa tabella puoi trovare il valore decimale di qualsiasi numero esadecimale che si trovi nell'intervallo 0H a FFH. Significa che il valore decimale del numero deve essere compreso tra 0 e 255 numeri decimali.
- Trovare il valore decimale per il numero esadecimale dalla tabella sopra: Nella tabella sopra riportata, 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.
Dobbiamo avere qualsiasi numero esadecimale, ad esempio ACH, da convertire nel numero decimale equivalente. Quindi vedremo il valore decimale nella colonna Cth della riga Ath della 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 riportata, 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) di il 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 si desidera trovare il numero esadecimale equivalente per il numero decimale 154, vedere la posizione del numero nella tabella. Il numero 154 si trova 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 è lo stesso dei primi 128 caratteri del set di caratteri ASCII ma è diverso dai restanti caratteri. Questi altri caratteri sono generalmente chiamati caratteri ASCII speciali di 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 i simboli. Questi caratteri sono stati elencati nella tabella dei caratteri ASCII fornita in questo capitolo. Questi caratteri di controllo hanno i seguenti significati:
NUL (Null):
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. Useremo questo carattere quando faremo la programmazione per i wiper di dati (distruttivi e non distruttivi entrambi) per cancellare lo spazio non allocato in modo che i dati cancellati non possano essere recuperati da nessuno o da nessun programma.
SOH (inizio dell'intestazione):
Questo carattere viene utilizzato per indicare l'inizio dell'intestazione, che può contenere informazioni sull'indirizzo o sull'itinerario.
TX (inizio testo):
Questo carattere viene utilizzato per indicare l'inizio del testo e in questo modo viene utilizzato anche per indicare la fine dell'intestazione.
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):
Si tratta di una richiesta di risposta da una stazione remota. È una richiesta a una stazione di identificarsi.
ACK (Riconoscimento):
È un personaggio, trasmesso da un dispositivo ricevente come risposta affermativa a una levigatrice. Viene utilizzato come risposta positiva ai messaggi di sondaggio.
BEL (campana):
Viene usato quando è necessario 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:\> Eco ^G
Qui ^G è stampato dalla combinazione di tasti Ctrl + G.
BS (Backspace):
Questo carattere indica il movimento del meccanismo di stampa o visualizza il cursore indietro in una posizione.
HT (scheda orizzontale):
Indica il movimento del meccanismo di stampa o visualizza il cursore in avanti fino alla successiva “Tab” preassegnata o posizione di arresto.
LF (avanzamento riga):
Indica il movimento del meccanismo di stampa o visualizza il cursore all'inizio della riga successiva.
VT (scheda verticale):
Indica lo spostamento del meccanismo di stampa o visualizza il cursore alla successiva di una serie di righe di stampa preassegnate.
FF (Feed modulo):
Indica lo spostamento del meccanismo di stampa o visualizza il cursore nella posizione iniziale della pagina, della pagina o dello schermo successiva.
CR (Ritorno a domicilio):
Indica il movimento del meccanismo di stampa o visualizza il cursore nella posizione iniziale della stessa riga.
SO (Shift Out):
Indica che le combinazioni di codici che seguono devono essere interpretate come al di fuori del set di caratteri standard fino a quando non viene raggiunto un carattere Shift In.
I (Sposta verso l'interno):
Indica che le combinazioni di codici che seguono devono essere interpretate secondo il set di caratteri standard.
DLE (Data Link Escape):
È un carattere che cambierà il significato di uno o più caratteri che seguono contigui. Può fornire un controllo supplementare o consentire l'invio di caratteri di dati con qualsiasi combinazione di bit.
DC1, DC2, DC3 e DC4 (controlli dispositivo):
Questi sono i caratteri per il controllo di dispositivi ausiliari o 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 sincrono per ottenere la sincronizzazione quando non vengono inviati dati, un sistema di trasmissione sincrono può inviare continuamente caratteri SYN.
ETB (fine del blocco di trasmissione):
Questo carattere indica la fine di un blocco di dati a scopo di comunicazione. Viene utilizzato per bloccare i dati, laddove 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 generalmente ignorati perché è stato rilevato un errore.
EM (End of Medium): indica l'estremità fisica di un nastro, la superficie (solitamente del piatto di un disco) o un altro supporto o l'estremità della parte richiesta del supporto utilizzata.
SUB (Sostituto): è un sostituto di un carattere ritenuto errato o non valido.
ESC (Escape): è un carattere destinato a fornire l'estensione del codice in quanto fornisce un significato alternativo a un numero specificato di caratteri che seguono continuamente.
FS (File Separator): questo carattere viene utilizzato come carattere separatore di file.
GS (Separatore di gruppo): Viene utilizzato come carattere separatore di gruppo.
RS (Separatore di record): Viene utilizzato come carattere separatore di record.
Stati Uniti (separatore degli Stati Uniti):
È un carattere separatore unito.
Il secondo gruppo di 32 codici di caratteri ASCII ha vari simboli di punteggiatura, caratteri speciali e cifre numeriche. I personaggi più importanti di questo gruppo includono i seguenti:
space character (ASCII code 20H)
numeric digits 0 through 9 (ASCII codes 30h through 39h)
mathematical and logical symbols
SP (Spazio):
È un carattere non stampabile utilizzato per separare le parole o 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 diversi caratteri alfabetici, i restanti sei codici contengono vari simboli speciali.
Il quarto gruppo di 32 codici di caratteri ASCII è il gruppo di simboli alfabetici minuscoli, cinque simboli speciali aggiuntivi e un altro carattere di controllo cancella.
CANC (Elimina):
È usato per cancellare i caratteri indesiderati, piuttosto possiamo dire di eliminare i caratteri indesiderati.
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 è la rappresentazione dei dati e la tabella ASCII come mostrato di seguito:
Rappresentazione dei dati e tabella dei codici ASCII:
HEX |
DEC |
CHR |
CTRL |
00 |
0 |
NUL |
^@ |
01 |
1 |
SOH |
^A |
02 |
2 |
STX |
^B |
03 |
3 |
ETX |
^C |
04 |
4 |
EOT |
^D |
05 |
5 |
ENQ |
^E |
06 |
6 |
ACK |
^F |
07 |
7 |
BEL |
^G |
08 |
8 |
BS |
^H |
09 |
9 |
HT |
^I |
0A |
10 |
LF |
^J |
0B |
11 |
VT |
^K |
0C |
12 |
FF |
^L |
0D |
13 |
CR |
^M |
0E |
14 |
SO |
^N |
0F |
15 |
SI |
^O |
10 |
16 |
DLE |
^P |
11 |
17 |
DC1 |
^Q |
12 |
18 |
DC2 |
^R |
13 |
19 |
DC3 |
^S |
14 |
20 |
DC4 |
^T |
15 |
21 |
NAK |
^U |
16 |
22 |
SYN |
^V |
17 |
23 |
ETB |
^W |
18 |
24 |
CAN |
^X |
19 |
25 |
EM |
^Y |
1A |
26 |
SUB |
^Z |
1B |
27 |
ESC |
1C |
28 |
FS |
1D |
29 |
GS |
1E |
30 |
RS |
1F |
31 |
US |
HEX |
DEC |
CHR |
20 |
32 |
SP |
21 |
33 |
! |
22 |
34 |
" |
23 |
35 |
# |
24 |
36 |
$ |
25 |
37 |
% |
26 |
38 |
& |
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 |
? |
HEX |
DEC |
CHR |
40 |
64 |
@ |
41 |
65 |
A |
42 |
66 |
B |
43 |
67 |
C |
44 |
68 |
D |
45 |
69 |
E |
46 |
70 |
F |
47 |
71 |
G |
48 |
72 |
H |
49 |
73 |
I |
4A |
74 |
J |
4B |
75 |
K |
4C |
76 |
L |
4D |
77 |
M |
4E |
78 |
N |
4F |
79 |
O |
50 |
80 |
P |
51 |
81 |
Q |
52 |
82 |
R |
53 |
83 |
S |
54 |
84 |
T |
55 |
85 |
U |
56 |
86 |
V |
57 |
87 |
W |
58 |
88 |
X |
59 |
89 |
Y |
5A |
90 |
Z |
5B |
91 |
[ |
5C |
92 |
\ |
5D |
93 |
] |
5E |
94 |
^ |
5F |
95 |
_ |
HEX |
DEC |
CHR |
60 |
96 |
` |
61 |
97 |
a |
62 |
98 |
b |
63 |
99 |
c |
64 |
100 |
d |
65 |
101 |
e |
66 |
102 |
f |
67 |
103 |
g |
68 |
104 |
h |
69 |
105 |
i |
6A |
106 |
j |
6B |
107 |
k |
6C |
108 |
l |
6D |
109 |
m |
6E |
110 |
n |
6F |
111 |
o |
70 |
112 |
p |
71 |
113 |
q |
72 |
114 |
r |
73 |
115 |
s |
74 |
116 |
t |
75 |
117 |
u |
76 |
118 |
v |
77 |
119 |
w |
78 |
120 |
x |
79 |
121 |
y |
7A |
122 |
z |
7B |
123 |
{[} |
7C |
124 |
| |
7D |
125 |
} |
7E |
126 |
~ |
7F |
127 |
DEL |
La tabella successiva mostra il set di 128 caratteri ASCII speciali che sono spesso chiamati caratteri ASCII estesi:
HEX |
DEC |
CHR |
80 |
128 |
Ç |
81 |
129 |
ü |
82 |
130 |
é |
83 |
131 |
â |
84 |
132 |
ä |
85 |
133 |
à |
86 |
134 |
å |
87 |
135 |
ç |
88 |
136 |
ê |
89 |
137 |
ë |
8A |
138 |
è |
8B |
139 |
ï |
8C |
140 |
î |
8D |
141 |
ì |
8E |
142 |
Ä |
8F |
143 |
Å |
90 |
144 |
É |
91 |
145 |
æ |
92 |
146 |
Æ |
93 |
147 |
ô |
94 |
148 |
ö |
95 |
149 |
ò |
96 |
150 |
û |
97 |
151 |
ù |
98 |
152 |
ÿ |
99 |
153 |
Ö |
9A |
154 |
Ü |
9B |
155 |
¢ |
9C |
156 |
£ |
9D |
157 |
¥ |
9E |
158 |
₧ |
9F |
159 |
ƒ |
A0 |
160 |
á |
A1 |
161 |
í |
A2 |
162 |
ó |
A3 |
163 |
ú |
A4 |
164 |
ñ |
HEX |
DEC |
CHR |
A5 |
165 |
Ñ |
A6 |
166 |
ª |
A7 |
167 |
º |
A8 |
168 |
¿ |
A9 |
169 |
⌐ |
AA |
170 |
¬ |
AB |
171 |
½ |
AC |
172 |
¼ |
AD |
173 |
¡ |
AE |
174 |
« |
AF |
175 |
» |
B0 |
176 |
░ |
B1 |
177 |
▒ |
B2 |
178 |
▓ |
B3 |
179 |
│ |
B4 |
180 |
┤ |
B5 |
181 |
╡ |
B6 |
182 |
╢ |
B7 |
183 |
╖ |
B8 |
184 |
╕ |
B9 |
185 |
╣ |
BA |
186 |
║ |
BB |
187 |
╗ |
BC |
188 |
╝ |
BD |
189 |
╜ |
BE |
190 |
╛ |
BF |
191 |
┐ |
C0 |
192 |
└ |
C1 |
193 |
┴ |
C2 |
194 |
┬ |
C3 |
195 |
├ |
C4 |
196 |
─ |
C5 |
197 |
┼ |
C6 |
198 |
╞ |
C7 |
199 |
╟ |
C8 |
200 |
╚ |
C9 |
201 |
╔ |
HEX |
DEC |
CHR |
CA |
202 |
╩ |
CB |
203 |
╦ |
CC |
204 |
╠ |
CD |
205 |
═ |
CE |
206 |
╬ |
CF |
207 |
╧ |
D0 |
208 |
╨ |
D1 |
209 |
╤ |
D2 |
210 |
╥ |
D3 |
211 |
╙ |
D4 |
212 |
╘ |
D5 |
213 |
╒ |
D6 |
214 |
╓ |
D7 |
215 |
╫ |
D8 |
216 |
╪ |
D9 |
217 |
┘ |
DA |
218 |
┌ |
DB |
219 |
█ |
DC |
220 |
▄ |
DD |
221 |
▌ |
DE |
222 |
▐ |
DF |
223 |
▀ |
E0 |
224 |
α |
E1 |
225 |
ß |
E2 |
226 |
Γ |
E3 |
227 |
π |
E4 |
228 |
Σ |
E5 |
229 |
σ |
E6 |
230 |
µ |
E7 |
231 |
τ |
E8 |
232 |
Φ |
E9 |
233 |
Θ |
EA |
234 |
Ω |
EB |
235 |
δ |
EC |
236 |
∞ |
ED |
237 |
φ |
EE |
238 |
Ε |
HEX |
DEC |
CHR |
EF |
239 |
∩ |
F0 |
240 |
≡ |
F1 |
241 |
± |
F2 |
242 |
≥ |
F3 |
243 |
≤ |
F4 |
244 |
⌠ |
F5 |
245 |
⌡ |
F6 |
246 |
÷ |
F7 |
247 |
≈ |
F8 |
248 |
° |
F9 |
249 |
∙ |
FA |
250 |
· |
FB |
251 |
√ |
FC |
252 |
ⁿ |
FD |
253 |
² |
FE |
254 |
■ |
FF |
255 |
|
Alcuni termini importanti del sistema numerico, spesso utilizzati per la rappresentazione di Data e Data Storage
La tabella seguente rappresenta i vari prefissi che vengono utilizzati come prefissi frazionari e come prefissi di ingrandimento:
Byte:
L'uso più importante di un byte è contenere un codice carattere. Ne abbiamo discusso prima.
Kilobyte
Tecnicamente un kilobyte è 1024 byte, ma è spesso usato vagamente come sinonimo di 1000 byte. Nei sistemi decimali, kilo sta per 1000 ma nei sistemi binari un kilo è 1024 (210).
Il kilobyte è solitamente rappresentato da K o Kb. Per distinguere tra una K decimale (1000) e una K binaria (1024), lo standard IEEE (Institute of Electrical and Electronics Engineers) ha suggerito di seguire la convenzione di utilizzare una k piccola per un kilo decimale e una K maiuscola per un kilo binario ma questa convenzione non è assolutamente seguita rigorosamente.
Megabyte
Megabyte viene utilizzato per descrivere l'archiviazione dei dati di 1048576 (220) byte, ma quando viene utilizzato per descrivere le velocità di trasferimento dei dati come in MBps, si riferisce a un milione di byte. Megabyte è solitamente abbreviato in M o MB.
Gigabyte
Gigabyte viene utilizzato per descrivere la memoria di 1.073.741.824 (230) byte e un gigabyte equivale a 1.024 megabyte. Gigabyte è solitamente abbreviato in G o GB.
Terabyte
Terabyte è 1.099.511.627.776 (240) byte, ovvero circa 1 trilione di byte. Terabyte è talvolta descritto come 1012 (1.000.000.000.000) di byte, ovvero esattamente un trilione.
Petabyte
Petabyte è descritto come 1.125.899.906.842.624 (250) byte. Un Petabyte equivale a 1.024 terabyte.
Exabyte
Exabyte è descritto come 1.152.921.504.606.846.976 (260) byte. Un Exabyte è pari a 1.024 Petabyte.
Zettabyte
Zettabyte è descritto come 1.180.591.620.717.411.303.424 (270) byte, ovvero circa 1021 (1.000.000.000.000.000.000.000) di byte. Uno Zettabyte equivale a 1.024 Exabyte.
Yottabyte
Yottabyte è descritto come 1.208.925.819.614.629.174.706.176 (280) byte, ovvero circa 1024 (1.000.000.000.000.000.000.000.000) di byte. Uno Yottabyte equivale a 1.024 Zettabyte.
Termini comuni di archiviazione dei dati
Ci sono vari nomi usati per riferirsi ai termini forniti in precedenza, a vari raggruppamenti di bit di dati. Alcuni dei più comunemente usati sono stati elencati nella tabella seguente:
Term |
Number of Bits |
Bit / Digit / Flag |
1 |
Nibble / Nybble |
4 |
Byte / Character |
8 |
Word |
16 |
Double Word / Long Word |
32 |
Very Long Word |
64 |
Pagina modificata il: 10/03/2022