Introduzione alla Numerazione Binaria e alla Codifica Digitale dei Dati - PDF
Document Details

Uploaded by AbundantBeryllium
IIS "E. Fermi"
Tags
Summary
Questo documento esplora i fondamenti della numerazione binaria e la codifica digitale dei dati. Vengono spiegati concetti chiave quali bit, byte, e la capacità di memoria, confrontati con il sistema decimale. Sono presenti anche spiegazioni del sistema binario e di come funziona il computer. Inoltre è presente un'introduzione alla rappresentazione dei dati all'interno dei computer.
Full Transcript
Okay, here is the converted text from the images you sent, formatted in Markdown. I've done my best to capture the key information and structure it clearly. # IL MONDO DIGITALE ## 3.1 La numerazione binaria Quando misuriamo una grandezza – per esempio, la velocità di un'auto o la nostra temperatu...
Okay, here is the converted text from the images you sent, formatted in Markdown. I've done my best to capture the key information and structure it clearly. # IL MONDO DIGITALE ## 3.1 La numerazione binaria Quando misuriamo una grandezza – per esempio, la velocità di un'auto o la nostra temperatura corporea - otteniamo dati quantitativi che si possono rappresentare in forma analogica oppure in forma digitale. * nei dispositivi analogici i valori misurati variano in modo continuo, in analogia con le grandezze a cui si riferiscono; è il caso della colonnina dei termometri tradizionali; * i dispositivi digitali invece presentano i dati usando valori numerici, che sono per loro natura discreti, cioè discontinui, come nel display dei termometri elettronici. Il computer è il dispositivo digitale per eccellenza, poiché al suo interno tutte le informazioni sono rappresentate in forma numerica. ### I bit, i byte e la capacità di memoria Sappiamo già che: * il bit (0 o 1) è la più piccola unità di misura dell'informazione; * il byte è un gruppo di 8 bit (come **10010100** o **00110111**). Siccome ogni bit può avere due valori diversi, 2 bit possono assumere 2×2 = $2^2$ = 4 valori diversi, 3 bit 2x2x2 = $2^3$ = 8 valori diversi, e così via. | 1 bit | 2 bit | 3 bit | | :----- | :---- | :---- | | | 00 | 000 | | 0 | | 001 | | | 01 | 010 | | | | 011 | | 0 | | | | | 10 | 100 | | 1 | | 101 | | | 11 | 110 | | | | 111 | | 1 | | | | $2^1$ valori | $2^2$ valori | $2^3$ valori | Dunque con un byte di 8 bit si possono rappresentare $2^8$ = 256 valori diversi, per esempio i numeri interi in base 10 che vanno da 0 a 255. Come vedremo tra poco, anche per rappresentare dati non numerici, come le lettere dell'alfabeto e altri simboli, è comodo usare gruppi di 8 bit. Il byte perciò è diventato il riferimento per misurare la capacità di memoria dei dispositivi elettronici. La **TABELLA 3.1** mostra che le dimensioni dei documenti (o file) e la capacità dei supporti di memorizzazione in cui li conserviamo (come le memorie SSD o le chiavette USB) si misurano in kilobyte (kB, pari a 1024 byte), megabyte (MB, pari a 1024 kB), gigabyte (GB, pari a 1024 MB) o terabyte (TB, pari a 1024 GB). *** ## CAPITOLO 3 LA CODIFICA DIGITALE DEI DATI | UNITÀ DI MISURA | SIMBOLO | EQUIVALE A | PARI A CIRCA | PUÒ CODIFICARE | | :-------------- | :------ | :-------------------------------------------------------------------- | :----------- | :--------------------------------------------- | | byte | B | 8 bit | | un carattere alfanumerico | | kilobyte | kB | 1024 byte = $2^{10}$ byte | $10^3$ byte | un terzo di una pagina di testo | | megabyte | MB | 1024 kilobyte = 1 048 576 byte = $2^{20}$ byte | $10^6$ byte | circa 300 pagine di testo | | gigabyte | GB | 1024 megabyte = 1 048 576 kilobyte = $2^{30}$ byte | $10^9$ byte | circa 300mila pagine di testo | | terabyte | TB | 1024 gigabyte = 1 048 576 megabyte = $2^{40}$ byte | $10^{12}$ byte | circa 300 milioni di pagine di testo | *** ### Il sistema decimale e il sistema binario Il sistema per codificare i numeri a cui siamo abituati fin da piccoli è il sistema decimale (o in base 10), basato sull'«alfabeto» delle cifre che vanno da 0 a 9. Il sistema decimale è un sistema posizionale, in cui cioè le cifre assumono un valore diverso a seconda della posizione in cui si trovano all'interno di un numero: 427 e 247 per esempio rappresentano due numeri diversi, sebbene le cifre siano le stesse. La posizione delle cifre nei numeri decimali è associata, da destra verso sinistra, alle potenze crescenti di 10: all'estrema destra c'è la cifra delle unità ($10^0$), poi la cifra delle decine ($10^1$), poi la cifra delle centinaia ($10^2$), e così via. Per esempio: $427 = (4 × 10^2) + (2 × 10^1) + (7 × 10^0) = 400 + 20 + 7$ La ragione per cui usiamo il sistema decimale è che nelle mani abbiamo dieci dita: se si adotta una numerazione in base 10, quindi, diventa più semplice contare con le dita. Nel computer tutti i dati sono rappresentati mediante il sistema di numerazione binario (o in base 2), che usa soltanto le due cifre binarie: i bit 0 e 1. Il computer infatti «ha soltanto due dita», nel senso che ogni suo componente interno può assumere soltanto due stati diversi: o è attraversato da corrente elettrica (1) oppure non lo è (0). ### Come si interpretano le cifre nei due sistemi Come il sistema decimale, anche il sistema binario è posizionale; le cifre binarie però sono associate, da destra verso sinistra, alle potenze crescenti di 2, anziché di 10. La semantica dei numeri in base 10, cioè la convenzione che determina il loro significato, è data dalle potenze di 10 associate alla posizione di ciascuna cifra. Così, per esempio, nel caso del numero 4703 la corrispondenza è: $4703 = 4×10^3 + 7×10^2 + 0×10^1 + 3×10^0 = 4000 + 700 + 0 + 3$. In modo analogo, per i numeri binari la semantica è data dalle potenze di 2 associate alla posizione di ciascuna cifra. Per esempio, per il byte 10001101 la corrispondenza è: **10001101** = $1×2^7 + 0×2^6 + 0×2^5 + 0×2^4 + 1×2^3 + 1×2^2 + 0×2^1 + 1×2^0$, il ce equivale nel sistema decimale a 128 + 0+0+0+8+4+0+1=141. *** ### Convertire i numeri da binario a decimale Come abbiamo appena visto, quando si vuole convertire un numero binario in un numero in base 10, l'algoritmo da applicare è il seguente: **ALGORITMO PER LA CONVERSIONE DA BINARIO A DECIMALE** 1. Si moltiplica la cifra binaria più a destra per il fattore $2^0$ (= 1); 2. poi, andando verso sinistra, si moltiplica la cifra binaria successiva per $2^1$ (= 2); 3. poi si moltiplica la cifra binaria ancora più a sinistra per $2^2$ (= 4); quindi si moltiplica la cifra la successiva per $2^3$ (= 8), e così via; 4. alla fine si sommano tutti i numeri decimali così ottenuti. Per esempio, il numero binario 11010 (che si legge «uno uno zero uno zero») corrisponde al numero decimale 26. Infatti: 11010 = $(1 × 24) + (1 × 23) + (0 × 22) + (1 × 21) + (0 × 20)$ = 16 + 8 + 0 + 2 + 0 = 26. Per evitare ambiguità, quando confrontiamo tra loro numeri espressi nelle diverse basi, specificheremo a volte la base con un pedice alla fine del numero; nel caso appena visto, per esempio, scriveremo $26_{10}$ e $11010_2$. ### Convertire i numeri da decimale a binario Se si vuole invece convertire un numero intero dal sistema decimale a quello binario, l'algoritmo più semplice è il seguente: **ALGORITMO PER LA CONVERSIONE DA DECIMALE A BINARIO** 1. Si divide il numero decimale per 2 e si registra il valore del resto (che varrà 0 oppure 1); 2. poi si applica la stessa procedura del punto 1 al quoziente della divisione; 3. e così via, fino a quando si arriva a zero, trovando come resto 1; 4. il numero binario cercato è allora dato dall'elenco dei resti ottenuti, ma in ordine inverso rispetto a quello in cui li abbiamo trovati. Se per esempio si parte dal decimale 22, la procedura è la seguente: $22:2= 11$ con resto 0 $11:2= 5$ con resto 1 $5:2= 2$ con resto 1 $2:2= 1$ con resto 0 $1:2= 0$ con resto 1 Il resto dell'ultima divisione, seguito dai resti precedenti ordinati dal basso verso l'alto, dà l'equivalente binario del numero decimale $22_{10}$: è il numero binario $10110_2$. ### ESERCIZI 1. Quale caratteristica hanno in comune il sistema di numerazione decimale e quello binario? 2. Quale numero in base 10 equivale al numero binario **10001101**? 3. Quale numero in base 2 equivale al decimale 155? 4. Quanti bit sono necessari per rappresentare nel sistema binario il numero 1000 del sistema decimale? *** ### 3.2 Le quattro operazioni con i numeri binari I numeri rappresentati in forma binaria sono numeri a tutti gli effetti, su cui si può operare con procedimenti del tutto analoghi a quelli che siamo abituati ad applicare nel sistema decimale ### Le addizioni in binario Per sommare due numeri binari, basta metterli in colonna e applicare le regole di base elencate qui sotto. Le regole per la Somma: * 0+0=0 * 0+1=1 * 1+0=1 * 1+1=10 Vediamo per esempio come si sommano in colonna i due numeri 11101 e 1101: A. si inizia dalla colonna più a destra, quella delle unità (cioè dei bit che hanno peso 20): 1+1 in binario vale 10, perciò scriviamo O nella colonna delle unità e riportiamo l'1 nella colonna delle «decine»; B. nelle «decine», i bit con peso $2^1$, si ha quindi 1+(0+0), che vale 1 e non produce riporti; C. nelle <<centinaia», i bit con peso $2^2$, si ha 1+1 e quindi 0 con riporto di 1; D. nelle «migliaia», i bit con peso $2^3$, si ha 1+1+1, cioè 11, quindi 1 con riporto di 1; E. infine l'ultimo riporto di 1 si somma all'1 iniziale del primo addendo, perciò scriviamo 10 all'inizio del risultato. Dunque l'operazione dà il risultato 111012 + 11012 = 1010102, che nella numerazione decimale equivale alla somma $29_{10} + 13_{10} = 42_{10}$. ### Le sottrazioni in binario Per fare le sottrazioni tra numeri binari basta tenere presente che $10 – 1 = 1$; questo serve quando si deve prendere a prestito dalla colonna vicina. Per esempio, per sottrarre 10101 da 111011 incolonniamo i due numeri e poi: A. nella colonna delle unità si ha 1 – 1, perciò il risultato è 0; B. nella colonna delle «decine» si ha 1 – 0, perciò il risultato è 1; C. nella colonna delle «centinaia» si ha 0 – 1, perciò si deve prendere a prestito l'1 dalla colonna delle «migliaia» del minuendo e si ha 10 – 1, con risultato 1; D. ora nelle <<migliaia» del minuendo è rimasto 0, perciò si ha 0 – 0 e il risultato è 0; E. infine nelle prime due colonne rimane 11 – 1, che dà come risultato 10. Abbiamo così trovato che 1110112 – 101012 = 1001102, vale a dire $59_{10} - 21_{10} = 38_{10}$. *** ### Le moltiplicazioni in binario La moltiplicazione dei numeri binari è più semplice di quella dei numeri decimali, perché le «tabelline» da ricordare si riducono a quelle elencate qui sotto. Le «tabelline» per la moltiplicazione: * 0x0=0 * 0×1=0 * 1×0=0 * 1×1=1 Vediamo per esempio come si ottiene il prodotto di 101 per 11: A. moltiplico per la seconda cifra di 11 e scrivo il risultato 101 × 11 101 B. moltiplico la prima cifra di 11 e scrivo il risultato spostato di una colonna 101 × 11 101 101 C. infine sommo colonna per colonna i due risultati parziali 101 × 11 101 + 1010 1111 Abbiamo così trovato che $101_2 × 11_2 = 1111_2$, il che in base 10 equivale a $5_{10} × 3_{10} = 15_{10}$. ### Le divisioni in binario Per fare divisioni tra numeri binari la procedura è analoga a quella in base 10. Ecco per esempio i passaggi da seguire se si vuole dividere 11010 per 10: A. il quoziente inizia con 1 e si sottrae il divisore 10 dalle prime due cifre del dividendo, trovando come resto 1; B. si «abbassa» la terza cifra del dividendo e si sottrae il divisore, con resto 0; C. come terza cifra del quoziente si ha perciò 0, ma il resto ora è 1 (la cifra abbassata del dividendo); D. l'ultima cifra abbassata dà proprio il divisore 10, perciò il quoziente termina con 1. Qui la divisione non produce resto e si ha $11010_2 : 10_2 = 1101_2$, vale a dire $26_{10} : 2_{10} = 13_{10}$. ### ESERCIZI 1. Esegui questa addizione tra numeri binari e scrivi il risultato. 10100 + 10111 = 2. Esegui questa sottrazione tra numeri binari e scrivi il risultato. 11101 - 1111 = 3. Esegui questa moltiplicazione tra numeri binari e scrivi il risultato. 1011 × 11 = 4. Esegui questa divisione tra numeri binari e scrivi il risultato. 11110:11 = *** ### 3.3 La codifica dei numeri nel computer Finora abbiamo considerato soltanto numeri naturali, dando per scontato il loro segno positivo. Nel computer, però, vogliamo poter rappresentare tutti gli interi, quindi anche i numeri negativi. Bisogna allora estendere il codice usato finora. Lo si può fare notando che i segni possibili - «più» e «meno» - sono due, proprio come i valori di un bit. La scelta più naturale, dunque, è dedicare al segno il primo bit usato per rappresentare i numeri: diremo che nel primo bit il valore O rappresenta il segno +, mentre il valore 1 rappresenta il segno -. Questa convenzione sul segno, però, non è di per sé sufficiente per portare a una buona rappresentazione dei numeri relativi. Se per esempio abbiamo a disposizione in tutto 3 bit, avremmo infatti la seguente rappresentazione dei numeri di 2 bit con segno: Questa rappresentazione presenta un serio problema: lo zero è associato a ule dei numeri di 2 bit con segno: +3|011 ---|--- +2|010 +1|001 +0|000 non funziona! -0|100 -1|101 -2|110 -3|111 Questa rappresentazione presenta un serio problema: lo zero è associato a due diversi numeri binari, 000 (lo «zero positivo») e 100 (lo «zero negativo»). In realtà, però, di zero ne esiste uno solo, e vogliamo poterlo rappresentare in modo univoco. ### Il complemento a due Per questa ragione per i numeri con segno negativo si usa una rappresentazione diversa, basata sull'operazione detta di complementazione a due. Dato un numero binario, il numero binario di segno opposto si trova con questo algoritmo: **ALGORITMO PER COMPLEMENTARE A DUE** 1. Si cambiano tutti gli 0 in 1, e viceversa (complementazione a uno); 2. poi si aggiunge 1 al risultato (complementazione a due). Così, per esempio, per passare dal numero +3 al numero -3 la procedura è: 011 numero positivo +3 100 complemento a 1 1 si aggiunge 1 101 numero negativo -3 in complemento a 2 Nel caso di 3 bit, allora, i numeri con segno sono rappresentati così: +3| 011 ---|--- +2| 010 +1| 001 +0| 000 -1| 111 -2| 110 -3| 101 -4| 100 Con questa rappresentazione non c'è più ambiguità riguardo allo zero, che è sempre e soltanto associato a una sequenza di zeri. Va notato inoltre che con 3 bit si possono rappresentare i numeri che vanno da -4 a +3, cioè in totale $2_3$ = 8 numeri diversi. In generale, con n bit si possono rappresentare i numeri che vanno da $-2^{n-1}$ a $(+2^{n-1} −1)$. *** ### 3.4 La numerazione esadecimale I sistemi di numerazione in base 10 e in base 2, che abbiamo esplorato finora, non sono gli unici possibili. Si può definire una numerazione usando qualsiasi numero naturale come base: per esempio, usiamo la base 12 o 24 per misurare le ore del giorno, e la base 60 per misurare i minuti e i secondi. Nell'informatica è spesso comodo usare il sistema esadecimale, cioè la numerazione in base 16, che usa le seguenti «cifre»: 0 1 2 3 4 5 6 7 8 9 A B C D E F. Questa rappresentazione dei numeri, se si vuole che sia posizionale, richiede un alfabeto di 16 simboli diversi. Si usano allora le dieci cifre da 0 a 9 e le prime sei lettere maiuscole, da A a F, che rappresentano i numeri da 10 a 15 del sistema decimale. Dopo la lettera F si passa a numeri di due cifre: l'esadecimale 10 è il numero decimale 16, l'esadecimale 11 è il numero decimale 17, e così via. Nei numeri esadecimali con tre cifre, poi, la cifra delle «centinaia» è il coefficiente di $16^2$ = 256; così, per esempio, $100_{16} = 256_{10}$. ### Convertire da esadecimale a decimale Che cosa rappresenta allora il numero esadecimale A7B5? La semantica a cui fare riferimento è la seguente: $10×16^3+7×16^2 + 11×16^1 + 5×16^0 = 10×4096 + 7×256 + 11×16 + 5 = 42 933.$ Così, con l'aiuto della calcolatrice, si trova che A7B516 = 4293310 ### Convertire da decimale a esadecimale Se invece si vuole convertire un numero decimale nel corrispondente esadecimale, bisogna usare il metodo delle divisioni successive, dividendo ogni volta per 16. Per esempio, quale numero esadecimale equivale al decimale 35 982? Facendo le divisioni, si ottengono questi risultati: $35982: 16 = 2248$ con resto 14 $2248:16 = 140$ con resto 8 $140:16 = 8$ con resto 12 $8:16 = 0$ con resto 8 $080110101110011010101110110101110000100010001000110001100$ Prendendo i resti delle divisioni in ordine inverso, e ricordando che $12= C$ e $14 = E$, si trova il numero esadecimale 8C8E. Il risultato dunque è che $35982_{10} = 8C8E_{16}$. ### Convertire da esadecimale a binario Una procedura molto più semplice consente di convertire i numeri dal sistema esadecimale a quello binario, e viceversa. Infatti, siccome $16 = 2^4$, ogni cifra esadecimale si può esprimere nel sistema binario con 4 bit. Di conseguenza, si ha che: * per convertire un numero esadecimale in binario, basta sostituire a ogni cifra il corrispondente gruppo di 4 bit; * per convertire un numero binario in esadecimale, si raggruppano a 4 a 4 i bit del numero, partendo da destra, poi si sostituisce a ogni gruppo la corrispondente cifra esadecimale. *** | DECIMALE (BASE 10) | BINARIO (BASE 2) | ESADECIMALE (BASE 16) | | :----------------- | :--------------- | :--------------------- | | 0 | 0000 | 0 | | 1 | 0001 | 1 | | 2 | 0010 | 2 | | 3 | 0011 | 3 | | 4 | 0100 | 4 | | 5 | 0101 | 5 | | 6 | 0110 | 6 | | 7 | 0111 | 7 | | 8 | 1000 | 8 | | 9 | 1001 | 9 | | 10 | 1010 | A | | 11 | 1011 | B | | 12 | 1100 | C | | 13 | 1101 | D | | 14 | 1110 | E | | 15 | 1111 | F | Così, per esempio, si trova che $CA05_{16}$ = 11001010000001012. Infatti dalla TABELLA 3.2 si deducono le corrispondenze:: C| A| 0|5 ---|--- 1100| 1010| 000| 0101 ### Convertire da binario a esadecimale Vediamo ora invece come si procede per trovare il numero esadecimale equivalente al numero binario 100100100110110110. Per prima cosa raggruppiamo i bit a 4 a 4, partendo da destra: 10 | 0100 |1001|1011|0110 Poi aggiungiamo all'inizio gli zeri che servono per completare il primo gruppo, e infine usiamo le corrispondenze della TABELLA 3.2: 0010|0100|1001|1011|0110 ---|---|----|----|--- 2| 4| 9|B |6 Abbiamo così trovato che 1001001001101101102 = 249B616 Come dimostrano questi esempi, il sistema esadecimale è comodo perché consente di rappresentare in modo compatto lunghe sequenze di bit, con regole semplici per la codifica e la decodifica dei dati al passaggio da un sistema all'altro. Per esempio, come vedremo, i colori delle immagini in formato digitale (come gli sfondi delle app o delle pagine web) sono abitualmente codificati dai programmatori in formato esadecimale. Va sottolineato, però, che questa è soltanto una «scorciatoia» usata per convenienza dagli esseri umani: i computer, al loro interno, elaborano sempre e soltanto bit e byte, non numeri esadecimali. ### ESERCIZI 1. Quale numero decimale equivale al numero esadecimale 20A? 2. Come si esprime nel sistema esadecimale la sequenza di bit 1111 1110 1101 1110? *** ### 3.5 I caratteri ASCII e Unicode Sulla tastiera digitiamo caratteri alfanumerici che comprendono lettere, cifre, segni di punteggiatura e vari altri simboli. Perché il computer possa riconoscere questi dati, però, bisogna che siano in forma di numeri binari: i caratteri vanno codificati come sequenze di bit. Per capire come ciò avvenga, ricordiamo che ciascun bit può assumere due valori, 0 oppure 1. Un gruppo di 2 bit perciò può assumere 2 × 2 = 4 valori diversi, un gruppo di 3 bit può valori diversi, e così via. Un byte, formato da 8 bit, può dunque assumere $2^8$ = 256 valori diversi. I caratteri alfanumerici sono meno di 256, perciò li si può codificare associando a ciascuno un particolare valore di un byte, come nella TABELLA 3.3. ### Il codice ASCII rappresenta ciascun carattere alfanumerico con un byte. Come mostra la tabella, per esempio, nel codice ASCII la lettera a minuscola è il carattere associato al numero 97: quando digitiamo «a», perciò, il computer usa in realtà il numero binario 01100001 (97 in binario). Invece la à minuscola accentata, è il carattere con il codice 133; perciò nei computer è rappresentata dal byte 10000101. ASCII (che si pronuncia àski) è l'acronimo di American Standard Code for Information Interchange, «codice standard americano per lo scambio di informazioni». Fu creato negli Stati Uniti nel 1963, come evoluzione del codice Morse usato fin dall'Ottocento per il telegrafo. Inizialmente era destinato alle macchine telescriventi, poi nel 1967 venne pubblicato uno standard a 7 bit, con tutti i simboli necessari per scrivere in inglese. Nel 1981 l'IBM portò il codice alla lunghezza di 8 bit e lo estese con l'aggiunta di altri 128 caratteri, che permettono per esempio di scrivere anche le vocali accentate italiane. Questo <<ASCII esteso» fu adottato nel modello IBM 5150, il primo personal computer con sistema operativo MS-DOS, e divenne poi uno standard internazionale. Il codice ASCII. | byte | cod. | car. | byte | cod. | car. | byte | cod. | car. | byte | cod. | car. | byte | cod. | car. | | :-------- | :--- | :---------------- | :------- | :--- | :--- | :------- | :--- | :--- | :-------- | :--- | :--- | :-------- | :--- | :---------------- | | 00000000 | 0 | Null character | 00100000 | 32 | space| 01000000 | 64 | @ | 01100000 | 96 |`| 10000000 | 128 | Ç | | 00000001 | 1 | Start of header | 00100001 | 33 | ! | 01000001 | 65 | A | 01100001 | 97 | a| 10000001 | 129 | ü | | 00000010 | 2 | Start of text | 00100010 | 34 |"| 01000010 | 66 | B | 01100010 | 98 | b| 10000010 | 130 | é | | 00000011 | 3 | End of text | 00100011 | 35 | # | 01000011 | 67 | C | 01100011 | 99 | c| 10000011 | 131 | à | | 00000100 | 4 | End of trans. | 00100100 | 36 |$| 01000100 | 68 | D | 01100100 | 100 | d| 10000100 | 132 | ä | | 00000101 | 5 | Enquiry | 00100101 | 37 | % | 01000101 | 69 | E | 01100101 | 101 | e| 10000101 | 133 | à | | 00000110 | 6 | Acknowledgment | 00100110 | 38 | `| 01000110 | 70 | F | 01100110 | 102 | f| 10000110 | 134 | å | | 00000111 | There seems to be a problem because not all tables are shown in the image I have. Therefore I cannot show table 3.3 compltetly. If you send me another image, I will do the work. However, if you send table 3.3 completely, I will continue this job. *** ### Unicode, il codice universale Il codice ASCII è nato negli Stati Uniti per codificare caratteri basati sul nostro alfabeto latino. Ma se si vogliono rappresentare anche i caratteri greci, cirillici, arabi, cinesi, giapponesi e così via, non bastano 8 bit: quei simboli infatti sono molto più numerosi dei 256 codici diversi resi disponibili da un byte. Con la globalizzazione dell'informatica si è reso necessario un codice uello più usato oggi è l'Unicode, che codifica usando un numero variabile di bit. In Unicode (codifica UTF-16) ogni carattere alfanumerico è codificato da 2 byte, il che significa che si possono rappresentare 216 = 65536 simboli diversi. Ciò permette di rappresentare più di 130 lingue diverse, che complessivamente usano un numero di simboli molto minore di 216; perciò l'Unicode è un buon codice universale per la comunicazione umana tramite i computer. Non possiamo riprodurre qui l'intero codice Unicode: occuperebbe molte decine di pagine del libro! A titolo di esempio, la lettera a minuscola è codificata in Unicode UTF-16 con i bit 00000000 01100001, mentre la à accentata diventa 00000000 11110000. Quando si usa un elaboratore di testi, oltre ai simboli presenti sulla tastiera si possono inserire nei documenti migliaia di caratteri Unicode ISO/IEC