INFORMATICA — FONDAMENTI | Prima Liceo Scientifico — Scienze Applicate

L’informatica ci aiuta a comprendere come rappresentare ed elaborare informazioni. Prima di studiare l’architettura dei computer e imparare a programmare, dobbiamo rispondere a una domanda fondamentale: come possono numeri, parole, immagini e suoni essere rappresentati mediante sequenze di simboli binari?

Obiettivi: distinguere dati e informazioni; spiegare il principio della codifica; utilizzare bit, byte e unità di misura; leggere numeri posizionali e convertirli tra basi 2, 8, 10 e 16; eseguire le quattro operazioni aritmetiche binarie e comprendere i principi di ASCII e Unicode; conoscere, come approfondimento, la rappresentazione in complemento a 2.

Prerequisiti: nessuna conoscenza informatica; sono sufficienti le quattro operazioni e il concetto di potenza.

1. Che cos’è l’informatica?

L’informatica è la disciplina che studia i principi, i metodi e gli strumenti per rappresentare, elaborare, memorizzare e comunicare l’informazione, in particolare mediante sistemi automatici. Non coincide con il semplice utilizzo del computer: comprende idee matematiche, modelli, procedimenti e tecnologie.

Usare un’applicazione per scrivere una relazione è un’attività informatica in senso pratico; comprendere come il testo viene rappresentato, trasformato e conservato significa invece studiarne i fondamenti. Il computer è uno strumento centrale, ma l’informatica è più ampia dello strumento stesso.

In questo percorso partiremo dai dati e dai codici. L’organizzazione interna del calcolatore sarà sviluppata nella lezione successiva; la costruzione di algoritmi e programmi verrà affrontata più avanti.

2. Dati, informazioni e conoscenza

Un dato è una rappresentazione di un fatto, di una misura o di un’osservazione secondo una forma convenuta. Un’informazione è il significato che ricaviamo da uno o più dati, interpretati all’interno di un contesto. La conoscenza è l’insieme organizzato di informazioni e relazioni che consente di comprendere fenomeni, fare valutazioni e prendere decisioni.

Esempio. Il dato 28 da solo è ambiguo. Il messaggio «temperatura dell’aula: 28 °C» ci comunica un’informazione. Conoscere le condizioni dell’ambiente e le esigenze delle persone permette di valutare se intervenire sulla ventilazione.

Un dato non deve essere necessariamente un numero: può essere una parola, una data, un’immagine o una registrazione. Il contesto determina la sua interpretazione. Anche un dato corretto può produrre una conclusione sbagliata se viene interpretato senza conoscere unità di misura, origine o significato.

3. Rappresentare e codificare

Per memorizzare o trasmettere un’informazione occorre rappresentarla mediante simboli e regole. Una codifica stabilisce come associare elementi di un insieme di informazioni a rappresentazioni convenzionali; la decodifica consente di interpretare correttamente la rappresentazione quando si conoscono le regole impiegate.

La cifra 5, la parola «cinque» e cinque segni tracciati su un foglio possono indicare la stessa quantità con codifiche diverse. Nella comunicazione digitale la stessa sequenza di bit può assumere significati differenti a seconda della codifica: senza conoscere il formato dei dati, i bit non bastano sempre a stabilire che cosa rappresentano.

Attenzione: codificare non significa necessariamente cifrare. La cifratura mira a proteggere il contenuto da letture non autorizzate; le codifiche studiate qui servono principalmente a rappresentare i dati.

4. Segnali analogici e rappresentazioni digitali

Una grandezza analogica, come una tensione elettrica variabile nel tempo, può assumere valori appartenenti a un intervallo continuo in un modello ideale. Una rappresentazione digitale usa invece un insieme discreto di simboli o valori. Una fotografia digitale, per esempio, descrive un’immagine attraverso valori numerici associati ai suoi elementi; il modo in cui i pixel vengono rappresentati sarà approfondito in una lezione successiva.

Digitalizzare una grandezza fisica richiede criteri di misura e rappresentazione: per questo il dato digitale non conserva necessariamente ogni dettaglio del fenomeno originale. Non bisogna tuttavia confondere digitale con binario: digitale significa discreto; binario significa che si impiegano due simboli.

5. Il bit e il byte

Il bit (binary digit) è un’unità di informazione binaria che può assumere due valori convenzionali, indicati con 0 e 1. Nei dispositivi elettronici tali valori possono corrispondere a stati fisici distinguibili, secondo specifiche convenzioni e caratteristiche del circuito. Non significa che ogni zero sia sempre «assenza di corrente» e ogni uno «presenza di corrente».

Una sequenza di n bit può avere 2n configurazioni differenti. Un byte è costituito da 8 bit; può dunque assumere 28 = 256 configurazioni. Un gruppo di 4 bit è spesso chiamato nibble.

1 byte = 8 bit    ·    configurazioni di n bit = 2n

Esempio. Con 3 bit possiamo formare 8 configurazioni: 000, 001, 010, 011, 100, 101, 110, 111. Se le interpretiamo come interi binari senza segno, rappresentano i numeri da 0 a 7. Le configurazioni sono sempre otto, ma il loro significato dipende dalla codifica.

Unità di misura: attenzione alle lettere

Il simbolo b indica il bit; B indica il byte. Nelle unità di misura della capacità vengono usati multipli decimali e binari, che non coincidono.

Unità Simbolo Equivalenza
kilobyte kB 1 000 B
megabyte MB 1 000 000 B
gigabyte GB 1 000 000 000 B
kibibyte KiB 1 024 B
mebibyte MiB 1 048 576 B
gibibyte GiB 1 073 741 824 B

Per esempio, 8 MB corrispondono a 8 000 000 byte, non a 8 388 608 byte (che sono invece 8 MiB). Il valore esatto dipende dall’unità indicata.

6. I sistemi di numerazione posizionali

Un sistema di numerazione utilizza simboli e regole per rappresentare i numeri. In un sistema posizionale il valore di ciascuna cifra dipende sia dalla cifra stessa sia dalla posizione occupata. La base b è il numero di cifre disponibili, dal valore 0 al valore b−1.

Nel sistema decimale, per esempio, 372 indica 3 centinaia, 7 decine e 2 unità:

37210 = 3 · 102 + 7 · 101 + 2 · 100

La regola generale per un numero intero di cifre dn…d1d0 in base b è:

(dn…d1d0)b = dnbn + … + d1b + d0

Il pedice indica la base e impedisce ambiguità: 102 vale due, mentre 1010 vale dieci.

Base Nome Cifre ammesse
2 Binaria 0, 1
8 Ottale 0–7
10 Decimale 0–9
16 Esadecimale 0–9, A, B, C, D, E, F

In esadecimale A, B, C, D, E e F rappresentano rispettivamente i valori decimali 10, 11, 12, 13, 14 e 15.

7. Dal binario al decimale

Per interpretare un numero binario, moltiplichiamo ogni cifra per il corrispondente peso, procedendo da destra: 20, 21, 22 e così via.

Esempio svolto. Convertiamo 10011012.

1·26 + 0·25 + 0·24 + 1·23 + 1·22 + 0·21 + 1·20 = 64 + 8 + 4 + 1 = 77.

10011012 = 7710

Tabella dei pesi binari: come leggere le cifre

Ogni posizione ha un peso pari a una potenza di 2. Si parte da 20 a destra e si procede verso sinistra; si sommano soltanto i pesi sotto i quali compare la cifra 1.

Posizione da destra 6 5 4 3 2 1 0
Peso 64 32 16 8 4 2 1
Cifra di 10011012 1 0 0 1 1 0 1
Contributo 64 0 0 8 4 0 1

Il controllo finale è 64 + 8 + 4 + 1 = 77. La tabella mostra perché il valore dipende dalla posizione e non dalla semplice lettura delle cifre.

Non dobbiamo leggere le cifre come un numero decimale: i pesi sono potenze di 2, non potenze di 10.

8. Dal decimale al binario

Un metodo generale per convertire un intero positivo dal decimale al binario è eseguire divisioni successive per 2. A ogni passaggio registriamo il resto (0 oppure 1) e proseguiamo con il quoziente intero, finché questo diventa zero. Il risultato si ottiene leggendo i resti dal basso verso l’alto.

Esempio svolto: 7710.

77 ÷ 2 = 38  resto 1
38 ÷ 2 = 19  resto 0
19 ÷ 2 =  9  resto 1
 9 ÷ 2 =  4  resto 1
 4 ÷ 2 =  2  resto 0
 2 ÷ 2 =  1  resto 0
 1 ÷ 2 =  0  resto 1

Resti dal basso: 1001101

Verifica: 64 + 8 + 4 + 1 = 77. Il numero zero si rappresenta con la cifra 0; non occorre eseguire divisioni.

Perché funziona? In ogni divisione, il resto indica la cifra binaria meno significativa del numero ancora da convertire; il quoziente contiene le cifre rimanenti. Per questo i resti si leggono in ordine inverso. Ad esempio, 13 ÷ 2 = 6 resto 1, 6 ÷ 2 = 3 resto 0, 3 ÷ 2 = 1 resto 1, 1 ÷ 2 = 0 resto 1: leggendo dal basso si ottiene 11012.

Il metodo delle potenze di 2

Un secondo metodo consiste nello scomporre il numero come somma di potenze di 2 distinte. Per esempio, 45 = 32 + 8 + 4 + 1; i pesi 32, 8, 4 e 1 diventano 1 e gli altri pesi intermedi diventano 0. Si ottiene 1011012.

9. Il sistema ottale e quello esadecimale

Il sistema ottale usa 8 cifre; quello esadecimale ne usa 16. Sono modi compatti per scrivere sequenze binarie: poiché 8 = 23, una cifra ottale corrisponde a 3 bit; poiché 16 = 24, una cifra esadecimale corrisponde a 4 bit.

Esempi. 478 = 4·8 + 7 = 3910.   2F16 = 2·16 + 15 = 4710.

Per convertire un intero decimale nelle basi 8 o 16 si possono usare divisioni successive per la base desiderata, con lettura dei resti dal basso.

10. Conversioni dirette tra binario, ottale ed esadecimale

Per passare dal binario all’ottale raggruppiamo le cifre a gruppi di tre da destra; per passare all’esadecimale formiamo gruppi di quattro da destra. Se il gruppo più a sinistra è incompleto, aggiungiamo zeri iniziali: non cambiano il valore del numero.

Esempio completo. Consideriamo 110101102.

Ottale: 011 | 010 | 110 → 3 | 2 | 6 → 3268.

Esadecimale: 1101 | 0110 → D | 6 → D616.

Controllo decimale: 128 + 64 + 16 + 4 + 2 = 214. Anche 3·64 + 2·8 + 6 = 214 e 13·16 + 6 = 214.

110101102 = 3268 = D616 = 21410

Per il passaggio inverso, sostituiamo ogni cifra ottale con 3 bit o ogni cifra esadecimale con 4 bit; gli eventuali zeri iniziali possono poi essere omessi.

11. Le operazioni aritmetiche nel sistema binario

Il sistema binario permette di eseguire le stesse quattro operazioni fondamentali del sistema decimale. Cambiano le cifre disponibili e la base dei riporti e dei prestiti: invece di raggruppare per dieci, raggruppiamo per due. Iniziamo con interi non negativi, senza imporre un numero fisso di bit; solo dopo esamineremo che cosa accade quando la lunghezza della rappresentazione è limitata.

11.1 Addizione: somme e riporti

Le regole sono 0 + 0 = 0, 0 + 1 = 1, 1 + 0 = 1 e 1 + 1 = 10. Quest’ultima scrittura significa: si scrive 0 e si riporta 1 alla colonna successiva. Con tre unità, 1 + 1 + 1 = 11: si scrive 1 e si riporta 1.

Esempio 1: 10112 + 01102.

    1011
  + 0110
  ------
   10001

Da destra: 1 + 0 = 1; 1 + 1 = 10 (scrivo 0, riporto 1); 0 + 1 + 1 = 10; 1 + 0 + 1 = 10. Il riporto finale genera una nuova cifra a sinistra. Verifica: 11 + 6 = 17 = 100012.

Esempio 2: 111012 + 101112.

    11101
  + 10111
  -------
   110100

Verifica: 29 + 23 = 52 = 1101002.

11.2 Sottrazione: differenze e prestiti

Le sottrazioni immediate sono 0 − 0 = 0, 1 − 0 = 1 e 1 − 1 = 0. Per eseguire 0 − 1, prendiamo in prestito un’unità dalla colonna a sinistra: nel sistema binario vale 102, cioè due unità della colonna corrente. Dunque 102 − 12 = 12. Quando necessario, il prestito attraversa più colonne.

Esempio 1: 110102 − 010112.

    11010
  - 01011
  -------
    01111

Verifica: 26 − 11 = 15 = 11112. Lo zero iniziale del risultato non modifica il valore.

Esempio 2: 100002 − 001112.

    10000
  - 00111
  -------
    01001

Il prestito attraversa le colonne contenenti zero. Verifica: 16 − 7 = 9 = 10012.

In questi esempi il minuendo è maggiore o uguale al sottraendo. La sottrazione che produce un risultato negativo verrà affrontata nella sezione 11.6.

11.3 Moltiplicazione: prodotti parziali

Le regole sono semplici: 0 × 0 = 0, 0 × 1 = 0, 1 × 0 = 0, 1 × 1 = 1. Come nel calcolo in colonna decimale, si costruiscono prodotti parziali e si sommano. Ogni posizione verso sinistra corrisponde a moltiplicare per 2.

Esempio 1: 10112 × 1012.

       1011
     x  101
     ------
       1011   (1011 x 1)
      0000    (1011 x 0, spostato di 1)
    101100    (1011 x 1, spostato di 2)
    ------
     110111

Verifica: 11 × 5 = 55 = 1101112.

Esempio 2: 11012 × 1102.

Poiché 1102 = 2 + 4, sommiamo 110102 e 1101002, ottenendo 10011102. Verifica: 13 × 6 = 78.

11.4 Divisione: quoziente e resto

La divisione binaria segue il metodo della divisione in colonna: si confrontano porzioni del dividendo con il divisore e si sottrae quando possibile. A ogni passo la cifra del quoziente è 0 oppure 1. Vale la stessa relazione che conosciamo per gli interi:

Dividendo = Divisore · Quoziente + Resto, con 0 ≤ Resto < Divisore

Esempio 1: 1101112 ÷ 1012.

Il dividendo vale 55 e il divisore vale 5. La divisione dà 10112, con resto 0.

Verifica binaria: 1012 × 10112 = 1101112. Verifica decimale: 5 × 11 = 55.

Esempio 2 — Divisione binaria in colonna, con resto: 1110102 ÷ 1012.

Come nella divisione decimale, confrontiamo da sinistra una porzione del dividendo con il divisore. Quando possiamo sottrarre 101, scriviamo 1 nel quoziente; altrimenti scriviamo 0. Poi abbassiamo il bit successivo.

                     1011  ← quoziente
              ┌──────────
       101 ) 111010
             -101
              ───
              010       ← resto parziale 010
                ↓ 0
              100       ← 100 < 101: cifra 0 nel quoziente
                ↓ 1
             1001
             -101
              ───
              100       ← resto parziale 100
                ↓ 0
             1000
             -101
              ───
              011       ← resto finale (11₂)

La disposizione è uno schema didattico dei passaggi; nella tabella seguente ogni bit abbassato e ogni cifra del quoziente sono allineati in modo esplicito.

Passo Porzione disponibile Sottrazione Bit del quoziente Resto parziale
1 111 111 − 101 1 10
2 100 (abbasso 0) Non possibile: 100 < 101 0 100
3 1001 (abbasso 1) 1001 − 101 1 100
4 1000 (abbasso 0) 1000 − 101 1 11

Risultato: quoziente 10112, resto 112. Controllo binario: 1012 × 10112 + 112 = 1110102. Controllo decimale: 5 × 11 + 3 = 58, con 3 < 5.

Condizione fondamentale: non si può dividere per zero. Se il dividendo è minore del divisore, il quoziente intero è zero e il resto coincide con il dividendo.

11.5 Numero fisso di bit: riporto e overflow

Finora abbiamo scritto tutte le cifre necessarie. In una rappresentazione con n bit fissati, invece, non è sempre possibile conservare il risultato completo: i numeri interi senza segno rappresentabili vanno da 0 a 2n − 1. Con 8 bit il massimo è 255. Per esempio, 111111112 + 000000012 = 1 000000002: il nono bit è il riporto finale. Se si memorizzano soltanto gli 8 bit meno significativi, rimane 00000000 e il risultato matematico 256 non è rappresentabile in 8 bit senza segno.

Il riporto finale non coincide sempre con l’overflow con segno: quest’ultimo si verifica quando un risultato esce dall’intervallo rappresentabile secondo una specifica codifica dei numeri con segno.

11.6 Approfondimento: numeri con segno e complemento a 2

Per rappresentare anche interi negativi, una codifica molto utilizzata è il complemento a 2. Con n bit l’intervallo è da −2n−1 a 2n−1 − 1. Con 8 bit si rappresentano quindi gli interi da −128 a +127. Il bit più a sinistra ha peso negativo nella lettura del numero, e una configurazione che inizia con 1 rappresenta un valore negativo.

Intervallo con segno, complemento a 2 (n bit): −2n−1 … 2n−1 − 1

Per ottenere la rappresentazione a 8 bit di −13, partiamo da +13, invertiamo tutti i bit e aggiungiamo 1:

+13 = 00001101
      11110010  (bit invertiti)
    +        1
      --------
-13 = 11110011  (complemento a 2 su 8 bit)

Verifica: interpretando 11110011 su 8 bit con segno si ottiene −128 + 64 + 32 + 16 + 2 + 1 = −13.

In complemento a 2 la sottrazione può essere svolta sommando l’opposto del sottraendo. Per esempio, su 8 bit: 18 = 00010010, −7 = 11111001; sommando si ottiene 1 00001011. Si conservano gli 8 bit 00001011, che rappresentano 11. Il riporto esterno non va confuso con l’overflow con segno.

Esempio di overflow con segno. Con 8 bit, 01111111 rappresenta +127. Sommando 00000001 si ottiene 10000000, che nella stessa codifica rappresenta −128, non +128. Il risultato matematico +128 è fuori dall’intervallo: si è verificato un overflow con segno.

Questa sezione è un approfondimento sui codici numerici, non una trattazione della CPU: il modo in cui i processori effettuano e controllano queste operazioni sarà collegato allo studio successivo dell’architettura del computer.

12. Numeri e caratteri: la differenza fra codifiche

La stessa sequenza di bit può rappresentare un numero oppure un carattere. In ASCII, per esempio, il carattere A corrisponde al valore decimale 65, ovvero 01000001 scritto su 8 bit. Anche il carattere 5 possiede un proprio codice: in ASCII vale 53, cioè 00110101 su 8 bit. Questo non è lo stesso dato del numero 5 rappresentato in binario.

Interpretazione Valore Sequenza su 8 bit
Intero senza segno 5 00000101
Carattere ASCII «5» (codice 53) 00110101
Carattere ASCII «A» (codice 65) 01000001

È quindi fondamentale sapere se stiamo leggendo un numero o un codice di carattere.

13. ASCII: la codifica storica dei caratteri

ASCII (American Standard Code for Information Interchange) definisce un repertorio di 128 valori codificati con 7 bit, da 0 a 127, comprendente lettere dell’alfabeto inglese, cifre, segni di punteggiatura e caratteri di controllo. Spesso i valori ASCII sono conservati in un byte, con un bit aggiuntivo, ma lo standard ASCII originario rimane a 7 bit.

Carattere Codice decimale ASCII Binario su 8 bit
A 65 01000001
B 66 01000010
a 97 01100001
0 48 00110000
Spazio 32 00100000

La dicitura «ASCII esteso» non identifica un’unica codifica standard: esistono differenti pagine di codice a 8 bit, non sempre compatibili tra loro. Inoltre, ASCII da solo non comprende molti caratteri necessari per le lingue del mondo.

14. Unicode e UTF-8

Unicode è uno standard che assegna identificatori numerici, chiamati punti di codice, ai caratteri di moltissime lingue e sistemi di scrittura, oltre a numerosi simboli. Un punto di codice viene spesso indicato nella forma U+XXXX, dove le cifre sono esadecimali.

UTF-8 è una delle modalità con cui i punti di codice Unicode vengono rappresentati come byte. Usa da 1 a 4 byte per ciascun punto di codice Unicode valido. I primi 128 punti di codice Unicode in UTF-8 corrispondono ai valori ASCII: è una ragione importante della sua grande diffusione.

Carattere Punto di codice Unicode Byte in UTF-8 (esadecimale)
A U+0041 41
è U+00E8 C3 A8
€ U+20AC E2 82 AC
😀 U+1F600 F0 9F 98 80

Un simbolo percepito come un singolo carattere sullo schermo non corrisponde sempre a un solo punto di codice: alcuni simboli visibili possono essere composti da più punti di codice. Per questo è inesatto affermare che ogni «carattere» occupa necessariamente uno, due o quattro byte.

Da ricordare: Unicode definisce i caratteri e i loro punti di codice; UTF-8 definisce come scrivere questi punti di codice in byte. Il font, invece, contribuisce alla forma visibile dei caratteri e non coincide con il loro codice.

15. Le altre informazioni digitali

Numeri e testi non sono gli unici contenuti rappresentabili digitalmente. Una immagine può essere descritta mediante valori relativi ai suoi punti oppure attraverso forme geometriche; un suono può essere rappresentato con campioni numerici; un video può combinare immagini nel tempo e una o più tracce audio. In tutti questi casi servono regole precise per interpretare i dati.

Questa osservazione mostra l’importanza generale della codifica senza anticipare lo studio dei formati multimediali, della compressione o delle tecniche di elaborazione avanzata.

16. Errori frequenti e metodo di controllo

  • Dimenticare la base: 10102 non è mille-dieci, ma dieci in decimale.
  • Leggere i resti nell’ordine sbagliato: nelle divisioni successive si leggono dal basso verso l’alto.
  • Confondere bit e byte: 8 bit formano 1 byte, non 8 byte.
  • Confondere MB e MiB: sono unità differenti.
  • Usare cifre non ammesse: 1022 e 898 non sono scritture valide in quelle basi.
  • Confondere cifre e codici: il valore numerico 5 non coincide con il codice ASCII del carattere «5».
  • Confondere Unicode e UTF-8: uno identifica i punti di codice; l’altro è una codifica in byte.
  • Non distinguere il riporto dall’overflow: il significato dei risultati dipende dal numero di bit e dalla codifica con o senza segno.
  • Interpretare sempre il bit iniziale come segno: ciò è valido soltanto se è stata scelta una rappresentazione con segno, come il complemento a 2.

Per verificare una conversione conviene sempre effettuare l’operazione inversa. Nel caso di conversioni fra più basi, il passaggio attraverso il valore decimale può fungere da controllo indipendente.

17. Allenati con MEGI — esercizi graduati

Livello A — Comprendere i concetti

  1. Spiega con un esempio la differenza tra dato e informazione.
  2. Quante configurazioni diverse si possono ottenere con 5 bit?
  3. Quanti bit ci sono in 3 byte? Qual è la differenza fra 2 kB e 2 KiB?
  4. Perché 1112 e 11110 non indicano lo stesso numero?

Livello B — Conversioni e operazioni

  1. Converti 1011012 in decimale.
  2. Converti 5810 in binario e verifica il risultato.
  3. Converti 3A16 in decimale e binario.
  4. Converti 110111012 in esadecimale e ottale.
  5. Calcola 10102 + 01112 e controlla in decimale.
  6. Calcola 110102 − 010112 e verifica il risultato.
  7. Calcola 10112 × 1012 e verifica il prodotto.
  8. Dividi 1110102 per 1012. Indica quoziente, resto e relazione di verifica.

Livello C — Codici numerici e caratteri

  1. Scrivi −13 in complemento a 2 su 8 bit, mostrando i passaggi.
  2. Quali sono gli intervalli dei numeri rappresentabili con 8 bit senza segno e con segno in complemento a 2?
  3. Spiega perché la somma 011111112 + 000000012 produce overflow con segno su 8 bit.
  4. Spiega perché il carattere «7» e il numero intero 7 possono avere rappresentazioni binarie diverse.
  5. Individua e correggi l’errore: «ASCII standard utilizza 8 bit e rappresenta 256 caratteri».
  6. Spiega la differenza tra il punto di codice Unicode di «è» e la sua sequenza di byte UTF-8.
  7. Una sequenza di 4 bit viene interpretata come un intero binario senza segno. Qual è il massimo valore possibile? Che cosa cambia se i 4 bit sono usati come codice arbitrario per quattro simboli?
  8. Esegui 18 − 7 in complemento a 2 su 8 bit, usando la somma di 18 e −7.
Mostra soluzioni ragionate — Livello A
  1. 28 è un dato; «temperatura 28 °C» è un’informazione contestualizzata.
  2. 25 = 32 configurazioni.
  3. 3 byte = 24 bit. 2 kB = 2000 B; 2 KiB = 2048 B.
  4. 1112 = 710 perché i pesi sono 4, 2, 1; 11110 = 111.
Mostra soluzioni ragionate — Livello B
  1. 1011012 = 32 + 8 + 4 + 1 = 4510.
  2. 5810 = 1110102 = 32 + 16 + 8 + 2.
  3. 3A16 = 3·16 + 10 = 5810 = 0011 10102 (o 1110102 senza zeri iniziali).
  4. 110111012 = DD16 = 3358 = 22110.
  5. 10102 + 01112 = 100012; 10 + 7 = 17.
  6. 110102 − 010112 = 011112; 26 − 11 = 15.
  7. 10112 × 1012 = 1101112; 11 × 5 = 55.
  8. 1110102 ÷ 1012: quoziente 10112, resto 112; verifica 58 = 5·11 + 3.
Mostra soluzioni ragionate — Livello C
  1. 13 = 00001101; invertendo i bit: 11110010; sommando 1: 11110011, che rappresenta −13 in complemento a 2 su 8 bit.
  2. 8 bit senza segno: 0…255. Complemento a 2 con 8 bit: −128…+127.
  3. 011111112 = 127; aggiungendo 1 si ottiene 100000002, che in complemento a 2 rappresenta −128: +128 non è rappresentabile.
  4. Il valore numerico 7 è 00000111 su 8 bit; il carattere ASCII «7» ha codice decimale 55 = 00110111 su 8 bit.
  5. ASCII originale usa 7 bit e definisce 128 codici; non esiste un unico «ASCII esteso» universale.
  6. «è» ha punto di codice U+00E8 e in UTF-8 si scrive con i byte esadecimali C3 A8.
  7. Il massimo valore è 24 − 1 = 15. Quattro bit permettono 16 configurazioni, anche se soltanto quattro vengono associate ai simboli previsti.
  8. 18 = 00010010; +7 = 00000111; −7 = 11111001; somma 1 00001011; mantenendo gli 8 bit si ottiene 00001011 = 11, senza overflow con segno.

Le soluzioni sono fornite per l’autoverifica. Nei calcoli con numero fissato di bit bisogna sempre indicare se si sta usando una rappresentazione con segno oppure senza segno.

18. In sintesi: dal dato al computer

L’informatica studia come rappresentare ed elaborare l’informazione. I dati digitali richiedono convenzioni di codifica; il bit è l’elemento binario fondamentale, mentre un byte raccoglie otto bit. I sistemi di numerazione posizionali assegnano alle cifre pesi che dipendono dalla base: binario, ottale, decimale ed esadecimale permettono di esprimere lo stesso numero con scritture differenti. Nel binario possiamo eseguire addizione, sottrazione, moltiplicazione e divisione; per rappresentare anche numeri negativi su un numero fissato di bit possiamo utilizzare il complemento a 2.

I caratteri, infine, richiedono codifiche specifiche: ASCII è uno standard storico a 7 bit; Unicode identifica i punti di codice e UTF-8 li rappresenta mediante byte. Nel prossimo articolo vedremo come un computer è organizzato per conservare ed elaborare queste rappresentazioni.

Per approfondire sul sito MEGISTONE: Le basi di numerazione e La codifica delle informazioni. Si tratta di lezioni storiche mantenute come approfondimenti: alcuni esempi richiedono revisione e non sostituiscono la presente trattazione.

Riferimenti: Indicazioni nazionali per Informatica, Liceo scientifico — Scienze applicate, D.M. 211/2010; Unicode Standard e UTF-8; prefissi SI e IEC per le unità di misura.