Vai al contenuto
Appunti di InformaticaUniTo · 2026/27

Canale B · Lezione 02 · Libro, parte 1, §1.4–1.5

Testo, colori e suoni in bit; i numeri in base 2

Il computer conserva solo zeri e uni: lettere, colori e suoni diventano numeri, e i numeri si scrivono in base 2. Come si conta con due sole cifre, come diventano numeri un testo, una foto e una canzone, e come si fanno somme e numeri con la virgola in binario.

Libro
Johnsonbaugh, Brookshear, Brylow, Fondamenti dell'Informatica, parte 1 (Brookshear, cap. 1), §1.4–1.5
Docente
Stefano Berardi · canale B · A.A. 2026/27
Tempo di studio
3 ore, anche in più volte
  • Definizione o risultato da sapere
  • Trappola / errore tipico
  • Conta all'esame
  • Oltre il libro
  • Esempio svolto
  • L'idea e il metodo, passo per passo
  • Da ricordare
  • Ripasso

La lezione in 8 punti

  • Il computer conserva solo bit. Per conservare una lettera, un colore o un suono si usa una regola che lo trasforma in numeri, e i numeri si scrivono in bit.
  • In base 2 ogni bit è una moneta: le monete valgono 1, 2, 4, 8, 16 e così via, ognuna il doppio della precedente. 1 vuol dire «la moneta c'è», 0 «non c'è». Così 1101 vale 8 + 4 + 1 = 13.
  • Per le lettere dell'inglese c'è il codice ASCII: la A è 65, la B è 66. Per tutte le lingue del mondo c'è Unicode, e UTF-8 ne scrive ogni simbolo con 1, 2, 3 o 4 byte.
  • Una foto è una griglia di quadratini colorati, i pixel. In RGB ogni pixel è fatto di tre numeri da 0 a 255: quanto rosso, quanto verde, quanto blu.
  • Un suono si registra misurando l'onda tante volte al secondo. Ogni misura è un campione.
  • In base 2 si somma in colonna come a scuola, ma 1 + 1 fa 10: scrivi 0 e riporti 1. Se il risultato non entra nei bit che hai, c'è overflow.
  • Dopo la virgola le posizioni valgono un mezzo, un quarto, un ottavo e così via.
  • All'esame servono soprattutto le conversioni e le somme in base 2: tornano in tutte le lezioni che seguono.

Canali A, B e C

Nel canale B è la lezione di venerdì 02/10. Per il docente è la lezione 3, perché la prima è stata un'introduzione: qui è la 02. Stefano Berardi ha fatto le sezioni 1.4 e 1.5 del libro. Qui le trovi in un ordine diverso: prima la base 2 (§1.5), che serve per leggere tutto il resto, poi testo, immagini e suoni (§1.4), alla fine le somme e la virgola (§1.5). Nel canale A gli stessi argomenti sono nei lucidi «Cenni sulla codifica dei dati» di Felice Cardone, nel canale C nei lucidi «Rappresentazione» di Luca Paolini.

§1

Una regola trasforma tutto in numeri

Nella lezione 01 hai visto che un computer conserva solo bit: file di 0 e di 1, raccolti in byte da 8. Non ha un posto per le lettere, uno per i colori e uno per la musica. Ha solo bit.

Come fa allora a conservare un messaggio, una foto o una canzone? Con un accordo, come due amici che si scrivono in codice. La loro regola è: A vale 1, B vale 2, C vale 3, e così via. Per scrivere CIAO mandano i numeri 3, 9, 1 e 15. Chi riceve conosce la regola e rimette insieme la parola.

Il computer fa la stessa cosa, in due passi.

  1. Una regola trasforma la cosa in numeri: ogni lettera ha il suo numero, ogni colore i suoi tre numeri, ogni istante di un suono il suo numero.
  2. Ogni numero si scrive con 0 e 1, cioè in base 2.

Un byte, da solo, non dice che cosa contiene. Gli stessi otto bit possono essere un numero, una lettera o un colore: decide la regola con cui li leggi. Alla fine della lezione c'è un esercizio proprio su questo.

In questa lezione vedi prima il secondo passo, perché serve dappertutto: come si scrive un numero con 0 e 1. Poi le regole per il testo, le immagini e i suoni. Alla fine i conti in base 2: le somme e i numeri con la virgola.

Prova tu

Con la regola dei due amici, che parola è 3, 1, 19, 1?

C è la terza lettera, A la prima, S la diciannovesima: la parola è CASA.

Da ricordare

  • Il computer conserva solo bit.
  • Una regola trasforma lettere, colori e suoni in numeri; poi i numeri si scrivono in base 2.
  • Gli stessi bit possono essere un numero, una lettera o un colore: dipende dalla regola con cui li leggi.
§2

Contare con due cifre: la base 2

libro, §1.5

Comincia da una cosa che sai già fare. Nel numero 375 il 3 vale trecento, il 7 vale settanta e il 5 vale cinque. La stessa cifra vale di più quanto più sta a sinistra: ogni posizione vale dieci volte quella alla sua destra. Unità, decine, centinaia. Le cifre sono dieci, da 0 a 9, e per questo si chiama base 10.

La base 2 funziona allo stesso modo, con due differenze: le cifre sono solo 0 e 1, e ogni posizione vale il doppio di quella alla sua destra.

Le monete della base 2

Immagina di avere otto monete, una per tipo: da 1, 2, 4, 8, 16, 32, 64 e 128 euro. Ogni moneta vale il doppio della precedente. Mettile in fila, con la più grande a sinistra, come le cifre di un numero.

Posizione, da destra8ª7ª6ª5ª4ª3ª2ª1ª
Moneta da1286432168421

Per pagare una cifra scegli quali monete dare. Un numero in base 2 dice proprio questo: sotto ogni moneta c'è 1 se la dai, 0 se la tieni.

Prendi il numero 1101. Leggilo da destra, una moneta alla volta:

  1. l'ultima cifra è 1: la moneta da 1 c'è;
  2. la penultima è 0: la moneta da 2 non c'è;
  3. poi 1: la moneta da 4 c'è;
  4. poi 1: la moneta da 8 c'è.

Il totale è 8 + 4 + 1 = 13. Quindi 1101 in base 2 vale 13.

Un altro esempio, quello della figura 1.16 del libro: 100101.

Bit100101
Moneta32168421
La dai?sìnonosìnosì

Il totale è 32 + 4 + 1 = 37.

Per non confondere i due modi di scrivere i numeri si mette la base in basso: . Si legge «100101 in base due è uguale a 37 in base dieci». Senza il numerino, 100101 potrebbe essere centomilacentouno.

L'idea

Un numero in base 2 è una fila di monete: ogni posizione vale il doppio di quella alla sua destra, e il numero vale la somma delle posizioni dove c'è un 1. La base 2 si chiama anche sistema binario, e le sue cifre sono i bit.

Ora si capiscono due cose della lezione 01. Il bit più a sinistra di un byte si chiama «più significativo» perché è la moneta che vale di più, 128. E una cifra esadecimale è il valore di quattro bit, con le monete 8, 4, 2 e 1: per esempio 1101 è D, cioè 13.

Clicca sui bit nello strumento qui sotto: ogni bit acceso aggiunge la sua moneta.

Dai bit al numero: clicca sui bit

Caricamento dello strumento interattivo…

Prova tu

Quanto valgono in base 10 i numeri binari (a) 1010 e (b) 11111?

(a) Le monete sono 8 e 2: 1010 vale 10.

(b) Ci sono tutte le monete da 16 in giù: .

Contare in base 2

In base 10, dopo il 9 le cifre sono finite: scrivi 0 e metti un 1 a sinistra, e viene 10. In base 2 le cifre finiscono subito, dopo l'1. Ecco i primi numeri.

Base 10012345678
Base 20110111001011101111000

Controlla con le monete: 110 vuol dire 4 + 2, cioè 6.

Fin dove arrivano 8 bit

Con le sole monete da 1, 2 e 4 il massimo che paghi è 7, dandole tutte: 111. Contando anche lo 0, le somme possibili sono 8, da 0 a 7.

Con tutte e otto le monete, da 1 a 128, il massimo è 11111111. Vale 1 + 2 + 4 + 8 + 16 + 32 + 64 + 128 = 255. Le somme possibili sono 256, da 0 a 255.

C'è una scorciatoia. Una fila di 1 vale sempre la moneta successiva meno 1: 111 vale 8 − 1 = 7, e 11111111 vale 256 − 1 = 255.

Ripasso · Le potenze di 2

si legge «due alla terza» e vuol dire 2 moltiplicato per sé stesso 3 volte: . Le monete della base 2 sono proprio le potenze di 2. Conviene saperle a memoria fino a .

Potenza
Valore12481632641282565121024

Con bit, quindi, si scrivono i numeri da 0 a , che si legge «due alla n meno uno». Con 8 bit ; con 16 bit . Questi numeri, da 0 in su, senza segno meno e senza virgola, si chiamano interi senza segno (unsigned integers). Per i numeri negativi e per quelli con la virgola il libro usa altri sistemi, nelle sezioni 1.6 e 1.7.

Dal decimale al binario: pagare con le monete

Ora il viaggio al contrario: da 45 alla base 2. Paga 45 euro con le monete, partendo sempre dalla più grande che ci sta.

  1. La moneta da 64 è troppo grande. Quella da 32 ci sta: la dai, restano 45 − 32 = 13.
  2. Quella da 16 è troppo per 13: la tieni.
  3. Quella da 8 ci sta: la dai, restano 13 − 8 = 5.
  4. Quella da 4 ci sta: la dai, resta 5 − 4 = 1.
  5. Quella da 2 è troppo per 1: la tieni.
  6. Quella da 1 ci sta: la dai, resta 0.
Moneta32168421
La dai?sìnosìsìnosì
Bit101101

Quindi 45 si scrive 101101. Controllo: 32 + 8 + 4 + 1 = 45.

Il metodo del libro: dividere per 2

Con le monete si fa presto se il numero è piccolo. Il libro dà un altro metodo, nella figura 1.17, che funziona sempre allo stesso modo anche con i numeri grandi.

Metodo · Le divisioni per 2

  1. Dividi il numero per 2 e scrivi il resto, che è 0 o 1.
  2. Dividi per 2 il risultato, e scrivi di nuovo il resto.
  3. Continua finché il risultato è 0.
  4. Leggi i resti dall'ultimo al primo: è il numero in base 2.

Esempio 13 in base 2 (figura 1.18 del libro)

DivisioneRisultatoResto
13 : 261
6 : 230
3 : 211
1 : 201

I resti, dall'ultimo al primo: 1101. Controllo con le monete: 8 + 4 + 1 = 13.

Perché si leggono al contrario? Il primo resto dice se il numero è dispari: 13 diviso 2 dà resto 1, quindi la moneta da 1 serve. Dividere per 2 è come cambiare ogni moneta con quella che vale la metà: la moneta da 2 diventa quella da 1, e il resto dopo dice se serve la moneta da 2. Così i bit escono da destra verso sinistra, e per scriverli nell'ordine giusto si leggono dall'ultimo.

Nello strumento scegli un numero e guarda le divisioni passo per passo.

Le divisioni per 2, passo per passo: scegli un numero

Caricamento dello strumento interattivo…

Tre cose da sapere sugli zeri.

  • Lo zero non ha bisogno di divisioni: in base 2 è 0, e in un byte 00000000.
  • Gli zeri a sinistra non cambiano il valore, come in base 10 007 è 7: 1101 e 00001101 valgono tutti e due 13.
  • Uno zero aggiunto a destra, invece, raddoppia il numero: ogni bit passa alla moneta successiva. 11010 vale 26, il doppio di 13.

Trappola · «Quanti bit servono» e «scrivilo con 8 bit» sono domande diverse

13 ha bisogno di almeno 4 bit: 1101. Per scriverlo con 8 bit aggiungi quattro zeri a sinistra: 00001101. Invece 256 ha bisogno di 9 bit, 100000000, e in un byte non ci sta: con 8 bit si arriva a 255.

Prova tu

(a) Scrivi 27 in base 2, una volta con le monete e una volta con le divisioni. (b) Quanto vale 101010?

(a) Con le monete: 16 ci sta, restano 11; 8 ci sta, restano 3; 4 no; 2 ci sta, resta 1; 1 ci sta. Hai dato 16, 8, 2 e 1: 11011.

Con le divisioni: 27 : 2 = 13 resto 1; 13 : 2 = 6 resto 1; 6 : 2 = 3 resto 0; 3 : 2 = 1 resto 1; 1 : 2 = 0 resto 1. Dall'ultimo al primo: 11011. I due metodi danno lo stesso numero.

(b) Le monete sono 32, 8 e 2: .

Da ricordare

  • In base 2 le posizioni valgono 1, 2, 4, 8, 16…, da destra: ognuna il doppio della precedente. Il numero vale la somma delle posizioni con un 1.
  • Dalla base 10 alla base 2: paga con le monete partendo dalla più grande, oppure dividi per 2 finché il risultato è 0 e leggi i resti dall'ultimo al primo.
  • Con bit si arriva a : con 8 bit a 255.
  • Controlla sempre al contrario: riconverti e guarda se torna.
§3

Le lettere: il codice ASCII

libro, §1.4

Ora che sai scrivere un numero in bit, torna al primo passo: la regola che trasforma le lettere in numeri. Una tabella che dà a ogni simbolo il suo numero si chiama codice. I simboli sono le lettere, le cifre, la punteggiatura, lo spazio e anche alcuni comandi, come «vai a capo».

Il codice più famoso è l'ASCII, che si legge «aschi» (American Standard Code for Information Interchange). I suoi numeri vanno da 0 a 127, quindi bastano 7 bit: simboli. Ci sono le lettere dell'alfabeto inglese, maiuscole e minuscole, le cifre, la punteggiatura e lo spazio. Oggi ogni simbolo occupa un byte intero, con uno 0 in più a sinistra.

Ecco la parola «Hello.» in ASCII, come nella figura 1.11 del libro.

SimboloNumeroByte
H7201001000
e10101100101
l10801101100
l10801101100
o11101101111
.4600101110

Controlla la H con le monete: 01001000 ha le monete da 64 e da 8, e 64 + 8 = 72.

La tabella completa sta nelle appendici del libro, ma non serve impararla. Basta sapere dove cominciano i gruppi.

SimboliNumeri
spazio32
cifre da «0» a «9»da 48 a 57
maiuscole da A a Zda 65 a 90
minuscole da a a zda 97 a 122

Metodo · Trovare il numero di una lettera

  • Maiuscola: 64 più il posto della lettera nell'alfabeto inglese. A è la prima, quindi 64 + 1 = 65; C è la terza, quindi 67.
  • Minuscola: 96 più il posto. a è 97, c è 99.
  • Cifra: 48 più la cifra. Il simbolo «7» è 55.

Due cose da notare.

  • Maiuscola e minuscola differiscono di 32: A è 65, a è 97. Nei bit cambia una sola moneta, proprio quella da 32: A è 01000001, a è 01100001. È la domanda 2 del §1.4 del libro.
  • Le cifre sono simboli come gli altri. Il simbolo «7» è il numero 55, cioè 00110111. Per il computer non è il numero 7, che in base 2 è 00000111: è un disegno da mostrare sullo schermo.

I numeri non si scrivono in ASCII

Per scrivere il numero 25 in ASCII servono due simboli, «2» e «5», cioè due byte. In base 2, invece, 25 è 11001 e sta in un byte solo.

La differenza cresce con i byte. Con due byte in ASCII si scrivono due cifre, quindi si arriva a 99. Con gli stessi 16 bit in base 2 si arriva a 65535. Per questo il libro conclude che i numeri si conservano in base 2, e i conti si fanno direttamente sui bit.

Prova tu

(a) Il numero di B è 66. Qual è quello di b? (b) Che simbolo è il byte 00110011?

(a) La minuscola vale 32 in più: .

(b) Le monete sono 32, 16, 2 e 1: il numero è 51. Le cifre partono da 48, e 51 = 48 + 3: è il simbolo «3».

Da ricordare

  • Un codice dà a ogni simbolo un numero. ASCII va da 0 a 127, cioè 7 bit, e oggi usa un byte per simbolo.
  • Maiuscole da 65, minuscole da 97, cifre da 48, spazio 32. Maiuscola e minuscola differiscono di 32.
  • Il simbolo «7» non è il numero 7. I numeri si scrivono in base 2, non in ASCII.
§4

Tutte le lingue: Unicode e UTF-8

libro, §1.4

Prova a scrivere in ASCII la parola «perché»: non si può. La é non c'è, e non c'è nemmeno il simbolo dell'euro. ASCII è nato per l'inglese.

Prima si è provato con codici da 8 bit, cioè 256 simboli: i primi 128 come in ASCII, gli altri diversi per ogni gruppo di lingue. Il codice Latin-1, per esempio, ha le lettere accentate dell'Europa occidentale. Il libro spiega perché non basta: 256 simboli sono pochi per lingue come il cinese, e un testo scritto in più lingue non sa quale tabella usare.

Unicode: un numero per ogni simbolo del mondo

La soluzione di oggi si chiama Unicode: un'unica, enorme tabella con i simboli di tutte le lingue, più simboli matematici, emoji e molto altro. Ha posto per più di un milione di simboli, e i primi 128 sono quelli di ASCII.

Il numero di un simbolo si chiama punto di codice (code point). Si scrive «U+» seguito dal numero in esadecimale, il modo breve di scrivere i bit della lezione 01.

SimboloPunto di codiceIn base 10
AU+004165
èU+00E8232
€U+20AC8364
😀U+1F600128512

UTF-8: quanti byte per simbolo

Unicode dice solo quale numero ha ogni simbolo. Resta da decidere come scriverlo in byte. La strada più semplice sarebbe dare a tutti i simboli lo stesso spazio, per esempio 4 byte; ma allora un testo in italiano occuperebbe quattro volte più che in ASCII.

UTF-8 fa una cosa più furba: ai numeri piccoli dà pochi byte, ai numeri grandi di più. È il modo più usato, e quasi tutte le pagine web sono scritte così.

SimboliByte in UTF-8
quelli di ASCII: lettere senza accento, cifre, punteggiatura, spazio1
lettere accentate come è e à, alfabeto greco, russo, arabo, ebraico2
quasi tutti gli altri, compresi € e i caratteri cinesi e giapponesi3
emoji e simboli rari4

Per sapere quanto occupa un testo, conta i simboli di ogni riga. «perché» ha 6 simboli: p, e, r, c, h hanno un byte ciascuno, la é ne ha 2. In tutto 5 + 2 = 7 byte.

Leggendo un file, come fa il computer a capire dove finisce un simbolo e comincia il successivo? Lo dice il primo byte di ogni simbolo, con i suoi primi bit:

  • comincia con 0 se il simbolo ha un byte solo;
  • comincia con 110 se ne ha due, con 1110 se ne ha tre, con 11110 se ne ha quattro;
  • i byte che seguono cominciano tutti con 10.

I simboli di ASCII hanno un byte solo, che comincia con 0, ed è proprio il byte di ASCII. Quindi un testo scritto in ASCII è già un testo UTF-8, con gli stessi byte.

Trappola · UTF-8 non vuol dire «8 bit per simbolo»

L'8 dice che UTF-8 lavora a byte, ma un simbolo può occupare da 1 a 4 byte. Contare i simboli non basta per sapere i byte: «perché» ha 6 simboli e occupa 7 byte.

Approfondimento · Come si costruiscono i byte, bit per bit

Questa parte non compare nei quiz delle simulazioni: serve per capire lo strumento qui sotto e l'ultimo esercizio.

Punti di codiceBit del numeroByteSchema dei byte
da U+0000 a U+007Ffino a 710xxxxxxx
da U+0080 a U+07FFfino a 112110xxxxx 10xxxxxx
da U+0800 a U+FFFFfino a 1631110xxxx 10xxxxxx 10xxxxxx
da U+10000 a U+10FFFFfino a 21411110xxx 10xxxxxx 10xxxxxx 10xxxxxx

Al posto delle x vanno i bit del punto di codice, da sinistra a destra.

  1. Scrivi il punto di codice in base 2.
  2. Conta i bit e scegli la riga: fino a 7 bit un byte, fino a 11 due, fino a 16 tre, fino a 21 quattro.
  3. Aggiungi zeri a sinistra finché i bit sono tanti quante le x della riga.
  4. Metti i bit al posto delle x.

La è. Il punto di codice è U+00E8, cioè 232, in base 2 11101000: 8 bit, quindi due byte, che hanno posto per 11 bit. Con tre zeri davanti: 00011101000. I primi 5 bit vanno nel primo byte, gli altri 6 nel secondo: 110 00011 e 10 101000, cioè 11000011 10101000, in esadecimale C3 A8.

L'euro. Il punto di codice è U+20AC, in base 2 0010000010101100: 16 bit, quindi tre byte. I bit si dividono in 4, 6 e 6: 0010, 000010 e 101100. I byte sono 1110 0010, 10 000010 e 10 101100: in esadecimale E2 82 AC.

Scrivi una parola nello strumento: per ogni simbolo vedi il punto di codice e i byte di UTF-8.

Un testo in Unicode e UTF-8: scrivi quello che vuoi

Caricamento dello strumento interattivo…

Un file fatto solo di numeri di simboli, uno dopo l'altro, si chiama file di testo. Sono file di testo i .txt, ma anche i programmi in C e le pagine web. Word, invece, salva anche grassetti, caratteri e margini con codici suoi: un file .docx non è un file di testo.

Nota · Non solo UTF-8

Unicode si può scrivere in byte anche in altri modi. UTF-16, per esempio, usa 2 o 4 byte per simbolo, e lo usano al loro interno Windows e Java.

Prova tu

(a) Quanti byte occupa in UTF-8 la parola «caffè»? (b) Si può scrivere in ASCII?

(a) c, a, f e f hanno un byte ciascuno; la è ne ha 2. In tutto byte.

(b) No: la è non è tra i 128 simboli di ASCII.

Da ricordare

  • Unicode dà un numero, il punto di codice U+…, a ogni simbolo di ogni lingua.
  • UTF-8 scrive quel numero con 1, 2, 3 o 4 byte: 1 per i simboli di ASCII, 2 per le lettere accentate, 3 per €, 4 per le emoji.
  • Il primo byte di ogni simbolo dice quanti byte ha.
§5

Le immagini: pixel e colori

libro, §1.4

Ingrandisci molto una foto sul telefono: a un certo punto vedi tanti quadratini, ognuno di un colore solo. Sono i pixel, da picture elements, «elementi dell'immagine».

Una foto, per il computer, è una griglia di pixel, e ogni pixel è scritto con dei bit. Un'immagine fatta così si chiama mappa di bit (bit map).

In bianco e nero basta un bit per pixel: 1 per nero, 0 per bianco. Ecco una F fatta di cinque righe da cinque pixel.

RigaBitDisegno
111111■■■■■
210000■□□□□
311110■■■■□
410000■□□□□
510000■□□□□

I colori in RGB

Per i colori immagina tre lampadine puntate sullo stesso punto: una rossa, una verde e una blu. Ognuna ha una manopola che va da spenta, 0, ad accesa al massimo, 255. Ogni manopola è un numero da 0 a 255, e 255 è proprio il numero più grande che sta in un byte. Quindi un pixel occupa 3 byte, uno per lampadina.

Questo modo di scrivere i colori si chiama RGB, dalle iniziali dei tre colori in inglese: red, green, blue.

Le luci si mescolano così:

  • tutte spente danno il nero;
  • tutte al massimo danno il bianco;
  • rosso e verde insieme danno il giallo;
  • tre valori uguali danno un grigio.
ColoreRossoVerdeBluIn esadecimale
nero000#000000
bianco255255255#FFFFFF
rosso25500#FF0000
verde02550#00FF00
blu00255#0000FF
giallo2552550#FFFF00
grigio128128128#808080
arancione2551280#FF8000

L'ultima colonna è il modo di scrivere i colori nelle pagine web: ogni byte diventa due cifre esadecimali, come nella lezione 01. FF è 255, 80 è 128, 00 è 0.

Quanti colori ci sono in tutto? 256 valori per il rosso, per ognuno 256 per il verde, per ognuno 256 per il blu: , più di sedici milioni. È lo stesso numero di , perché 3 byte sono 24 bit.

Muovi le tre manopole nello strumento.

Rosso, verde e blu: tre byte per un pixel

Caricamento dello strumento interattivo…

Nota · Luminosità e colore

Il libro descrive anche un'altra strada: per ogni pixel si scrivono la luminosità (luminance) e due numeri per il colore (chrominance). La televisione e il formato JPEG usano un'idea simile, perché l'occhio nota le differenze di luminosità più di quelle di colore.

Quanto pesa un'immagine

Lo schermo di un portatile Full HD ha 1920 colonne e 1080 righe di pixel. I pixel sono 1920 × 1080 = 2073600. Ognuno occupa 3 byte, quindi un'immagine grande come lo schermo occupa 6220800 byte, circa 6 MB. Per questo le immagini si comprimono, per esempio in JPEG: lo racconta la sezione 1.9 del libro.

Metodo · Quanti byte occupa un'immagine senza compressione

  1. Moltiplica la larghezza per l'altezza, in pixel: sono i pixel.
  2. Moltiplica per i byte di ogni pixel: 3 in RGB.
  3. Se la domanda chiede i bit, moltiplica ancora per 8.

Immagini vettoriali

Una mappa di bit ha un limite: se la ingrandisci, ingrandisci anche i pixel, e l'immagine diventa a quadretti. Esiste un altro modo: invece dei pixel si scrive come disegnare l'immagine, cioè quali linee, curve e figure tracciare e dove. Si chiama immagine vettoriale.

Per ingrandire un'immagine vettoriale si ridisegnano le figure più grandi: niente quadretti. Sono fatti così i caratteri che si ingrandiscono a piacere, come TrueType e PostScript, i disegni tecnici e i file .svg. Per le fotografie, invece, la mappa di bit resta più fedele: è la domanda 9 del §1.4.

Prova tu

(a) Che colore è (255, 255, 0)? E (0, 255, 255)? (b) Quanti byte occupa un'immagine di 100 × 100 pixel in RGB, senza compressione?

(a) Il primo è giallo: rosso più verde. Il secondo è il ciano, un azzurro chiaro: verde più blu.

(b) I pixel sono , ognuno di 3 byte: byte.

Da ricordare

  • Una foto è una griglia di pixel. In RGB ogni pixel ha tre numeri da 0 a 255, rosso, verde e blu: 3 byte.
  • Byte di un'immagine senza compressione: larghezza × altezza × 3.
  • Le immagini vettoriali dicono come disegnare le figure: si ingrandiscono senza quadretti, ma non vanno bene per le foto.
§6

I suoni: misurare l'onda

libro, §1.4

Un suono è l'aria che vibra, avanti e indietro, come un'onda. Quanto è alta l'onda dà il volume; quanto è fitta dà la nota, più grave o più acuta.

Pensa a un'altalena. Se la fotografi una volta al secondo, dalle foto capisci poco di come si muove. Se la fotografi cento volte al secondo, dalle foto ricostruisci tutto il movimento. Con un suono si fa lo stesso: si misura l'altezza dell'onda tante volte al secondo, sempre allo stesso ritmo, e si conservano i numeri.

Ogni misura si chiama campione (sample), e prendere le misure si chiama campionamento. Il libro fa l'esempio di un'onda registrata con i campioni 0; 1,5; 2,0; 1,5; 2,0; 3,0; 4,0; 3,0; 0.

Per registrare un suono si fanno due scelte.

  • Quante misure al secondo. Per una telefonata bastano 8000 campioni al secondo. Un CD musicale ne prende 44 100 al secondo.
  • Con quanti bit si scrive ogni misura. Il CD usa 16 bit, cioè valori possibili. Ogni misura viene arrotondata al valore più vicino, come quando misuri con un righello che ha solo le tacche dei millimetri. Questo arrotondamento si chiama quantizzazione.

Più misure al secondo e più bit per misura danno un suono più fedele, ma occupano più spazio. La musica in stereo, poi, ha due registrazioni, una per orecchio: si chiamano canali.

Nello strumento vedi un'onda, i campioni presi a intervalli regolari e il suono che si ricostruisce dai campioni.

Campionare un suono: meno campioni, meno fedeltà

Caricamento dello strumento interattivo…

Metodo · Quanti byte occupa un suono

Moltiplica fra loro quattro numeri: i campioni al secondo, i byte di ogni campione, i canali (1 se mono, 2 se stereo) e i secondi.

Esempio · Un'ora di musica su CD (domanda 10 del §1.4)

  1. Ogni campione ha 16 bit, cioè 2 byte.
  2. In un secondo di stereo: byte.
  3. Un'ora ha 3600 secondi: byte, circa 635 MB.

Un CD contiene da 600 a 700 MB: un'ora di musica lo riempie quasi tutto.

C'è anche un modo completamente diverso. Una registrazione conserva il suono; uno spartito conserva le istruzioni per suonarlo. Il formato MIDI (Musical Instrument Digital Interface) è uno spartito: dice quale strumento, quale nota e per quanto tempo. Occupa pochissimo: secondo il libro, un clarinetto che suona un re per due secondi occupa 3 byte in MIDI, contro più di due milioni di bit con 44 100 campioni al secondo. Il difetto è lo stesso dello spartito: il suono vero dipende da chi lo suona, cioè dallo strumento elettronico che esegue le istruzioni.

Prova tu

Quanti byte occupa un minuto di telefonata registrata con 8000 campioni al secondo, 8 bit per campione e un solo canale?

Ogni campione occupa 8 bit, cioè un byte. In un secondo ci sono 8000 byte, in un minuto byte.

Da ricordare

  • Un suono si registra con i campioni: misure dell'onda prese tante volte al secondo.
  • CD: 44 100 campioni al secondo, 16 bit ciascuno, due canali.
  • Byte di un suono: campioni al secondo × byte per campione × canali × secondi.
§7

Sommare in base 2

libro, §1.5

Ricorda come si somma in colonna in base 10, per esempio 58 + 27. Nella colonna di destra 8 + 7 fa 15: scrivi 5 e riporti 1. Nella colonna dopo 5 + 2 + 1 fa 8. Il risultato è 85.

In base 2 si fa nello stesso modo. Cambia solo una cosa: appena una colonna arriva a 2, hai già finito le cifre. Le somme possibili in una colonna sono solo quattro.

Nella colonnaFaScriviRiporti
0 + 0zero00
0 + 1 oppure 1 + 0uno10
1 + 1due, che in base 2 è 1001
1 + 1 + 1 di riportotre, che in base 2 è 1111

Ecco l'esempio del libro: 00111010 + 00011011, cioè proprio 58 + 27. Si parte dalla colonna di destra. Nella prima riga ci sono i riporti, che arrivano dalla colonna a destra.

8ª7ª6ª5ª4ª3ª2ª1ª
riporti0111010
5800111010
2700011011
somma, 8501010101

Le prime colonne, da destra:

  1. 0 + 1 fa 1: scrivi 1, niente riporto.
  2. 1 + 1 fa due, cioè 10: scrivi 0 e riporti 1.
  3. 0 + 0 più il riporto fa 1: scrivi 1, niente riporto.
  4. 1 + 1 fa 10: scrivi 0 e riporti 1.
  5. 1 + 1 più il riporto fa tre, cioè 11: scrivi 1 e riporti 1.

E così via fino a sinistra. Controllo con le monete: 01010101 vale 64 + 16 + 4 + 1 = 85.

Quando il risultato non ci sta: l'overflow

Pensa al contachilometri di un motorino con tre cifre. Dopo 999 non c'è posto per 1000: torna a 000. Con i bit succede lo stesso.

Con 8 bit gli interi senza segno vanno da 0 a 255. Prova 200 + 100, cioè 11001000 + 01100100. Il risultato vero è 300, che in base 2 è 100101100: ha 9 bit. Negli 8 bit c'è posto solo per gli ultimi 8. Il 1 più a sinistra si perde e resta 00101100, cioè 44.

Questo si chiama overflow, in italiano anche «trabocco»: il risultato non ci sta nei bit che hai. Chi programma lo incontra davvero: un contatore di 8 bit, dopo 255, ricomincia da 0.

Trappola · Conta solo il riporto che esce a sinistra

Con bit c'è overflow quando l'ultima colonna a sinistra dà un riporto: non ha più posto dove andare. I riporti in mezzo non contano. Con 4 bit, : i riporti attraversano tre colonne, ma ci sta, perché con 4 bit si arriva a 15. Invece dà un riporto anche dall'ultima colonna: non ci sta, ed è overflow.

Questa regola vale per gli interi senza segno. Per i numeri con il segno, nella prossima lezione, ce n'è un'altra.

Clicca sui bit dei due numeri nello strumento e guarda i riporti.

Somma in colonna con 8 bit: clicca sui bit dei due numeri

Caricamento dello strumento interattivo…

Prova tu

(a) Calcola 1011 + 0110. (b) Con 4 bit il risultato ci sta?

(a) Da destra: 1 + 0 fa 1; 1 + 1 fa 10, scrivi 0 e riporti 1; 0 + 1 più il riporto fa 10, scrivi 0 e riporti 1; 1 + 0 più il riporto fa 10, scrivi 0 e riporti 1. Il riporto finale va in una colonna nuova: 10001, cioè 17. Infatti .

(b) No. Con 4 bit si arriva a 15. Il riporto finale si perde e resta 0001, cioè 1: overflow.

Da ricordare

  • 0 + 0 = 0; 0 + 1 = 1; 1 + 1 = 10, scrivi 0 e riporti 1; 1 + 1 + 1 = 11, scrivi 1 e riporti 1.
  • Con bit gli interi senza segno vanno da 0 a .
  • Se l'ultima colonna a sinistra dà un riporto, il risultato non ci sta: è overflow.
§8

I numeri con la virgola in base 2

libro, §1.5

In base 10, 3,75 vuol dire 3 unità, 7 decimi e 5 centesimi: dopo la virgola ogni posizione vale un decimo di quella a sinistra. In base 2 vale la stessa idea con le metà.

Torna alle monete. A destra della virgola aggiungi monete sempre più piccole, ognuna la metà della precedente: mezzo euro, un quarto di euro, un ottavo di euro.

Moneta421,1/21/41/8
Bit di 101,101101,101

Quindi 101,101 vale 4 + 1 prima della virgola, e 1/2 + 1/8 dopo. È la figura 1.19 del libro.

Ripasso · Sommare mezzi, quarti e ottavi

Per sommare frazioni con sotto numeri diversi, portale tutte agli ottavi: un mezzo è 4/8, un quarto è 2/8. Quindi 1/2 + 1/8 = 4/8 + 1/8 = 5/8.

Il numero 101,101 vale 5 e 5/8. Con la virgola in base 10 è 5,625, perché 5/8 = 0,625.

Nota · Virgola o punto

Il libro, in inglese, scrive 101.101 con il punto, e chiama la virgola radix point. Qui scrivo la virgola, come si fa in italiano. È lo stesso numero.

Da una frazione alla base 2

Con le frazioni piccole si usano ancora le monete: scrivi la frazione come somma di mezzi, quarti, ottavi.

  • 2 e 3/4: tre quarti sono un mezzo più un quarto. Quindi , cioè 10,11.
  • 5/16: sono 4/16 più 1/16, cioè un quarto più un sedicesimo. Le posizioni dopo la virgola sono 1/2, 1/4, 1/8, 1/16: il bit è 1 nella seconda e nella quarta, quindi 0,0101.

Quando il numero è scritto con la virgola in base 10, come 0,625, c'è un metodo che va sempre.

Metodo · Raddoppiare la parte dopo la virgola

  1. Raddoppia: . La cifra prima della virgola, qui 1, è il primo bit dopo la virgola.
  2. Tieni solo la parte dopo la virgola, 0,25, e raddoppia di nuovo: 0,5. Prima della virgola c'è 0: il secondo bit è 0.
  3. Raddoppia ancora: . Il terzo bit è 1, e non resta niente: hai finito.
  4. I bit, nell'ordine in cui escono: 0,625 si scrive 0,101.

Perché funziona? Raddoppiare sposta tutte le monete di un posto: il mezzo diventa 1 e finisce prima della virgola. Così, a ogni raddoppio, la cifra prima della virgola dice se c'era la moneta successiva.

Oltre il libro · numeri che in base 2 non finiscono

In base 10, 1/3 è 0,333… e non finisce mai. In base 2 succede anche a numeri che in base 10 hanno una sola cifra dopo la virgola: un decimo diventa 0,000110011001100…, con 0011 che si ripete per sempre. Il computer deve tagliarlo da qualche parte, e nasce un piccolo errore. Per questo in molti linguaggi di programmazione 0.1 + 0.2 dà 0.30000000000000004. Se ne riparla con la virgola mobile, nella sezione 1.7 del libro.

Sommare con la virgola

Si mettono le virgole una sotto l'altra e si somma come sempre, da destra. L'esempio del libro: 10,011 + 100,110, cioè 2 e 3/8 più 4 e 3/4.

Moneta421,1/21/41/8
riporti001,10
2 e 3/8010,011
4 e 3/4100,110
somma111,001

Il risultato è 111,001, cioè 7 e 1/8. Controllo: 2 e 3/8 più 4 e 3/4, cioè 2 e 3/8 più 4 e 6/8, fa 6 e 9/8, cioè 7 e 1/8.

Nello strumento ci sono anche tre bit dopo la virgola.

Bit con la virgola: clicca sui bit

Caricamento dello strumento interattivo…

Prova tu

(a) Quanto vale 11,01? (b) Scrivi 4 e 1/2 in base 2.

(a) Prima della virgola 2 + 1; dopo, solo la moneta da 1/4. In tutto 3 e 1/4.

(b) 4 è 100 e un mezzo è 0,1: in tutto 100,1.

Da ricordare

  • Dopo la virgola le posizioni valgono 1/2, 1/4, 1/8, 1/16…
  • Da frazione a base 2: scrivi la frazione come somma di mezzi, quarti, ottavi; oppure raddoppia la parte dopo la virgola e prendi le cifre prima della virgola.
  • Per sommare, metti le virgole in colonna e somma come sempre.
§9

I simboli di questa lezione

SimboloSi leggeVuol direEsempio
«1101 in base due»il numerino in basso dice la base
«due alla n»2 moltiplicato per sé stesso volte
«due alla n meno uno»l'intero senza segno più grande con bitcon 8 bit, 255
ASCII«aschi»il codice dei simboli dell'inglese, numeri da 0 a 127A = 65 = 01000001
U+00E8«u più zero zero e otto»il punto di codice di un simbolo in Unicode, in esadecimaleU+00E8 è la è
UTF-8«u-ti-effe otto»il modo di scrivere i punti di codice con 1, 2, 3 o 4 bytela è diventa C3 A8
(R, G, B)«erre, gi, bi»rosso, verde e blu di un pixel, da 0 a 255(255, 255, 0) è giallo
#FF8000«cancelletto effe effe otto zero zero zero»un colore RGB in esadecimale, due cifre per colorearancione
101,101«uno zero uno virgola uno zero uno»un numero in base 2 con la virgola: dopo la virgola 1/2, 1/4, 1/85 e 5/8
§10

Verso l'esame

esame

Le regole dell'esame, uguali per i tre canali, sono nella lezione 01 e nella scheda del corso.

Che cosa serve di questa lezione

  1. Le conversioni tra base 2 e base 10, anche con la virgola. Nei quiz delle simulazioni del 2023/24 tornano complemento a 2, virgola mobile e notazione in eccesso. Sono le sezioni 1.6 e 1.7 del libro, e si fanno tutte con le conversioni di questa lezione.
  2. La somma in colonna e l'overflow. Torna identica con il complemento a 2.
  3. Testo, immagini e suoni. Non compaiono nei quiz delle simulazioni del 2023/24, ma la sezione 1.4 sta nella mappa comune del libro. Servono le idee e i conti: i byte di un testo in UTF-8, di un'immagine, di un suono.

Conta all'esame · Conversioni senza pensarci

In 45 minuti ci sono 9 quiz: 5 minuti a domanda. Impara a memoria le potenze di 2 fino a e allenati con le conversioni finché vengono da sole. Nei quiz i numeri sono piccoli: con le potenze di 2 si fa spesso prima che con le divisioni.

Errori da evitare

  • Leggere i resti delle divisioni dal primo all'ultimo: si leggono dall'ultimo al primo.
  • Dimenticare un riporto, soprattutto quando in una colonna ci sono tre 1.
  • Confondere il simbolo «5», cioè 00110101, con il numero 5, cioè 00000101.
  • Contare un byte per simbolo in UTF-8: è, € ed emoji ne usano di più.
  • Nei conti su immagini e suoni, confondere bit e byte, o dimenticare che lo stereo ha due canali.
  • Dare alle posizioni dopo la virgola i valori 1/10 e 1/100: in base 2 valgono 1/2, 1/4, 1/8.
§11

Quiz

come all'esame
  1. Il codice ASCII della lettera M è 77. Qual è il codice della lettera m?
  2. Quanti byte occupa in UTF-8 il testo «Perché 5€?», spazio compreso?
  3. Quale di queste affermazioni su Unicode e UTF-8 è vera?
  4. Quanti colori diversi si possono scrivere con 3 byte per pixel, in RGB?
  5. Un'immagine di 640 × 480 pixel in RGB, senza compressione, quanti byte occupa?
  6. Dieci secondi di audio mono con 44 100 campioni al secondo e 16 bit per campione: quanti byte?
  7. Quanto vale in base 10 il numero binario 110101?
  8. Come si scrive 44 in binario?
  9. Con 8 bit, interi senza segno, si calcola 11110000 + 00100000. Che cosa si ottiene?
  10. Quanto vale il numero binario 10,011?
  11. Quale di questi numeri, scritto in base 2, ha infinite cifre dopo la virgola?
§12

Esercizi

con soluzioni

1 · Domanda 1 del §1.4: un messaggio in ASCII base

Che cosa dice questo messaggio in ASCII, un byte per simbolo? 01000011 01101111 01101101 01110000 01110101 01110100 01100101 01110010 00100000 01010011 01100011 01101001 01100101 01101110 01100011 01100101

Soluzione

Un trucco per le lettere: le maiuscole cominciano con 010 e valgono 64 più il posto della lettera nell'alfabeto; le minuscole cominciano con 011 e valgono 96 più il posto.

  1. 01000011 vale 67, cioè : la terza lettera maiuscola, C.
  2. 01101111 vale 111, cioè : la quindicesima lettera minuscola, o. Allo stesso modo 01101101 è m, 01110000 è p, 01110101 è u, 01110100 è t, 01100101 è e, 01110010 è r.
  3. 00100000 vale 32: lo spazio.
  4. 01010011 vale 83, cioè : S. Poi c, i, e, n, c, e.

Il messaggio è «Computer Science», come nelle risposte del libro.

2 · Domande 5 e 6 del §1.4: conversioni base

(a) Scrivi in base 10: 0101, 1001, 1011, 0110, 10000, 10010. (b) Scrivi in binario: 6, 13, 11, 18, 27, 4.

Soluzione

(a) Si sommano le posizioni con un 1.

BinarioSommaDecimale
01014 + 15
10018 + 19
10118 + 2 + 111
01104 + 26
100001616
1001016 + 218

(b) Con le potenze di 2, o con le divisioni.

DecimaleSomma di potenze di 2Binario
64 + 2110
138 + 4 + 11101
118 + 2 + 11011
1816 + 210010
2716 + 8 + 2 + 111011
44100

Sono le risposte che dà il libro.

3 · Domande 1 e 2 del §1.5: ancora conversioni base

(a) Scrivi in base 10: 101010, 100001, 10111, 0110, 11111. (b) Scrivi in binario: 32, 64, 96, 15, 27.

Soluzione
  1. (a) 101010 è ; 100001 è ; 10111 è ; 0110 è ; 11111 è .
  2. (b) 32 è una potenza di 2: 100000. Anche 64: 1000000. Poi : 1100000. : 1111. : 11011.

Controllo veloce: 11111 vale , perché è tutto 1 fino alla posizione del 16. In generale bit tutti a 1 valgono .

4 · Domanda 2 del §1.4: maiuscole e minuscole medio

In ASCII, che legame c'è tra il codice di una lettera maiuscola e quello della stessa lettera minuscola?

Soluzione
  1. A è 01000001, cioè 65; a è 01100001, cioè 97.
  2. I due byte sono uguali tranne un bit, il sesto da destra, quello della moneta da 32: 0 nella maiuscola, 1 nella minuscola.
  3. Quel bit vale 32: la minuscola ha codice 32 in più della maiuscola. Lo stesso vale per tutte le 26 lettere.

È la risposta del libro. I lucidi del canale A dicono la stessa cosa al contrario: per passare da minuscola a maiuscola si toglie 32.

5 · Domanda 3 del §1.4: scrivere in ASCII medio

Scrivi in ASCII, un byte per simbolo, la frase «Does 2 + 3 = 5?».

Soluzione

I simboli sono 15, spazi compresi.

SimboloCodiceByte
D6801000100
o11101101111
e10101100101
s11501110011
spazio3200100000
25000110010
spazio3200100000
+4300101011
spazio3200100000
35100110011
spazio3200100000
=6100111101
spazio3200100000
55300110101
?6300111111

Le cifre sono simboli: «2» è 00110010, non il numero 2. La domanda del libro ha anche una prima frase, «"Stop!" Cheryl shouted.». Nella risposta dell'appendice, pubblicata sul Moodle del canale A, il penultimo byte è stampato 01110100, che è la t: la d di «shouted» è 01100100.

6 · Domande 7 e 8 del §1.4: tre byte e i numeri con i punti medio

(a) Qual è il numero più grande che si scrive con tre byte, una cifra ASCII per byte? E in binario? (b) Nella notazione decimale puntata ogni byte si scrive come numero in base 10, e i numeri si separano con un punto: 00001100 00000101 diventa 12.5. Scrivi così 0000111100001111, 001100110000000010000000 e 0000101010100000.

Soluzione
  1. (a) In ASCII tre byte sono tre cifre: il massimo è 999. In binario 24 bit arrivano a .
  2. (b) Si divide ogni fila in byte e si converte ogni byte.
  3. 00001111 00001111: 15 e 15, cioè 15.15.
  4. 00110011 00000000 10000000: 51, 0 e 128, cioè 51.0.128.
  5. 00001010 10100000: 10 e 160, cioè 10.160.

È la notazione degli indirizzi di rete, come 192.168.1.1: quattro byte, scritti uno per uno in base 10.

7 · Domanda 10 del §1.4: un'ora di musica medio

Un'ora di musica stereo si registra con 44 100 campioni al secondo, come nei CD. Quanto spazio occupa, rispetto a un CD?

Soluzione
  1. Ogni campione ha 16 bit, cioè 2 byte, e i canali sono 2.
  2. In un secondo: byte.
  3. In un'ora, cioè 3600 secondi: byte.
  4. Sono circa 635 MB, e un CD contiene da 600 a 700 MB: lo riempie quasi tutto.

È la risposta del libro.

8 · Domande 3 e 4 del §1.5: le frazioni medio

(a) Scrivi in base 10: 11,01; 101,111; 10,1; 110,011; 0,101. (b) Scrivi in binario: 4 e 1/2; 2 e 3/4; 1 e 1/8; 5/16; 5 e 5/8.

Soluzione

(a) Dopo la virgola le posizioni valgono 1/2, 1/4, 1/8.

BinarioContoValore
11,013 + 1/43 e 1/4
101,1115 + 1/2 + 1/4 + 1/85 e 7/8
10,12 + 1/22 e 1/2
110,0116 + 1/4 + 1/86 e 3/8
0,1011/2 + 1/85/8

(b) Si scrive la frazione come somma di mezzi, quarti, ottavi, sedicesimi.

NumeroSommaBinario
4 e 1/24 + 1/2100,1
2 e 3/42 + 1/2 + 1/410,11
1 e 1/81 + 1/81,001
5/161/4 + 1/160,0101
5 e 5/85 + 1/2 + 1/8101,101

Sono le risposte del libro, che scrive i numeri con il punto.

9 · Domanda 5 del §1.5: addizioni difficile

Calcola in binario: (a) 11011 + 1100; (b) 1010,001 + 1,101; (c) 11111 + 0001; (d) 111,11 + 00,01.

Soluzione
  1. (a) In colonna, da destra: 1 + 0 = 1; 1 + 0 = 1; 0 + 1 = 1; 1 + 1 = 10, scrivo 0 e riporto 1; 1 + 1 di riporto = 10, scrivo 0 e riporto 1, che va in una colonna nuova. Risultato 100111. Controllo: , e 100111 vale .
  2. (b) Con le virgole in colonna: 1010,001 + 0001,101. Dopo la virgola, da destra: 1 + 1 = 10, scrivo 0 e riporto 1; 0 + 0 + 1 = 1; 0 + 1 = 1. Prima della virgola: 0 + 1 = 1; 1 + 0 = 1; 0 + 0 = 0; 1 + 0 = 1. Risultato 1011,110. Controllo: .
  3. (c) 11111 + 00001: ogni colonna dà 10 con il riporto, fino a una colonna nuova. Risultato 100000. Controllo: .
  4. (d) 111,11 + 000,01: dopo la virgola 1 + 1 = 10, poi 1 + 0 + 1 = 10; prima della virgola altre tre volte 10. Risultato 1000,00. Controllo: .

Sono le risposte del libro. Nella (c), con 5 bit senza segno, sarebbe overflow: il risultato ha 6 bit.

10 · UTF-8 al contrario difficile

Un file contiene questi byte, scritti in esadecimale: 43 69 74 74 C3 A0. Che parola c'è scritta?

Soluzione
  1. I primi quattro byte cominciano con 0 in binario, perché sono minori di 80 in esadecimale: sono simboli di ASCII. 43 vale 67, la C; 69 vale 105, la i; 74 vale 116, la t. Quindi «Citt».
  2. C3 in binario è 11000011: comincia con 110, quindi il simbolo occupa due byte. Il byte dopo, A0, è 10100000: comincia con 10, come deve.
  3. Si tolgono le parti fisse 110 e 10: restano 00011 e 100000. Insieme: 00011100000, che vale , cioè E0 in esadecimale.
  4. U+00E0 è la à. La parola è «Città».

11 · Una foto e un suono tipo esame

Una foto di 800 × 600 pixel in RGB, senza compressione. (a) Quanti byte occupa? (b) Quanti KB, con 1 KB = 1024 byte? (c) Quanti secondi di audio stereo di qualità CD occupano lo stesso spazio?

Soluzione
  1. (a) I pixel sono , ognuno di 3 byte: byte.
  2. (b) KB, cioè circa 1,4 MB.
  3. (c) Un secondo di audio stereo da CD occupa byte.
  4. fa circa 8,2: una sola foto occupa come poco più di 8 secondi di musica.

12 · Gli stessi bit, tre significati medio

Il byte 00110101 viene letto come intero senza segno, come carattere ASCII e come quantità di rosso di un pixel RGB con verde e blu a zero. Che cosa vuol dire nei tre casi?

Soluzione
  1. Come intero: le monete sono 32, 16, 4 e 1, quindi vale .
  2. Come carattere ASCII: il codice 53 è la cifra «5». Il numero 5, scritto in binario, sarebbe invece 00000101.
  3. Come rosso: il pixel è (53, 0, 0), un rosso scuro, perché 53 è poco rispetto al massimo 255.

I bit sono gli stessi: è la regola con cui li leggi a decidere se sono un numero, una lettera o un colore.

13 · Riporto in mezzo o overflow? medio

Con 8 bit senza segno calcola (a) 01111111 + 00000001 e (b) 11111111 + 00000001. Di' che cosa resta negli 8 bit e se c'è overflow.

Soluzione
  1. (a) 01111111 vale 127. Sommando 1, i sette 1 di destra diventano 0 e il riporto arriva all'ottava colonna: 10000000, cioè 128. Ci sta, perché il massimo è 255: niente overflow.
  2. (b) 11111111 vale 255. Sommando 1, il riporto esce anche dall'ottava colonna: il risultato vero è 100000000, cioè 256, che ha 9 bit. Negli 8 bit resta 00000000, cioè 0: c'è overflow.

Non conta quanti riporti ci sono in mezzo, conta solo se esce un riporto dall'ultima colonna.

§13

Domande di ripasso

autoverifica

Rispondi a voce alta o per iscritto, poi apri la risposta.

Che cos'è un codice? Perché ASCII non basta per l'italiano?

Un codice è una tabella che dà a ogni simbolo una fila di bit. ASCII ha solo 128 simboli, pensati per l'inglese: mancano le lettere accentate come è e à, e simboli come l'euro.

Che differenza c'è tra Unicode e UTF-8?

Unicode è la tabella: dà un numero, il punto di codice, a ogni simbolo di ogni lingua. UTF-8 è un modo di scrivere quei numeri in byte, da 1 a 4 per simbolo, con un byte solo per i simboli di ASCII.

Perché i numeri si scrivono in binario e non in ASCII?

In ASCII ogni cifra occupa un byte: con 2 byte si arriva a 99. In binario gli stessi 16 bit arrivano a 65535. I conti, poi, si fanno direttamente sui bit.

Com'è fatta un'immagine a mappa di bit? E una vettoriale?

Una mappa di bit è una griglia di pixel, ognuno scritto con dei bit: in RGB tre byte, per rosso, verde e blu. Un'immagine vettoriale è una descrizione di figure, come linee e curve con le loro coordinate: si ingrandisce senza quadretti.

Come si scrive un suono in bit? Da che cosa dipende quanto spazio occupa?

Si misura l'onda a intervalli regolari e si conservano le misure, i campioni. Lo spazio dipende da quanti campioni al secondo, da quanti bit ha ogni campione, dal numero dei canali e dalla durata.

Come si passa dalla base 2 alla base 10, e dalla base 10 alla base 2?

Dalla base 2 alla 10 si sommano i valori delle posizioni con un 1: 1, 2, 4, 8… da destra. Dalla base 10 alla 2 si divide per 2 finché il quoziente è 0 e si leggono i resti dall'ultimo al primo.

Che cos'è l'overflow negli interi senza segno?

Con bit si scrivono gli interi da 0 a . Se una somma è più grande, l'ultima colonna a sinistra dà un riporto che non ha posto: il risultato non ci sta, ed è overflow.

§14

Glossario

termini
Codice
Una tabella che dà a ogni simbolo una fila di bit.
ASCII
Il codice a 7 bit dei simboli dell'inglese (American Standard Code for Information Interchange): 128 simboli, oggi un byte ciascuno.
Unicode
La tabella che dà un numero a ogni simbolo di ogni lingua, compresi simboli matematici ed emoji.
Punto di codice
Il numero di un simbolo in Unicode (code point), scritto U+ e poi in esadecimale: U+00E8 è la è.
UTF-8
Il modo più usato di scrivere i punti di codice in byte: da 1 a 4 byte per simbolo, 1 per i simboli di ASCII.
File di testo
Un file fatto solo di codici di simboli, uno dopo l'altro (text file).
Pixel
Uno dei quadratini di cui è fatta un'immagine (picture element).
Mappa di bit
Un'immagine scritta come griglia di pixel (bit map).
RGB
Il modo di scrivere un colore con tre numeri da 0 a 255: rosso, verde e blu (red, green, blue).
Immagine vettoriale
Un'immagine descritta come insieme di figure con le loro coordinate: si ingrandisce senza perdere qualità.
Campione
Una misura dell'onda di un suono (sample). Il campionamento è il procedimento che prende i campioni a intervalli regolari.
MIDI
Un formato che conserva le istruzioni per suonare la musica, non l'onda (Musical Instrument Digital Interface).
Sistema binario
Il modo di scrivere i numeri in base 2: ogni posizione vale il doppio di quella alla sua destra (binary system).
Virgola binaria
La virgola dei numeri in base 2: dopo di lei le posizioni valgono 1/2, 1/4, 1/8 (radix point).
Riporto
L'1 che passa alla colonna di sinistra quando una colonna fa 2 o 3 (carry).
Intero senza segno
Un numero intero da 0 in su, scritto in binario con un numero fisso di bit (unsigned integer).
Overflow
Quando il risultato di un conto non ci sta nei bit disponibili.
§15

Checklist

0 su 6

Spunta quando sai fare la cosa senza guardare gli appunti. Le spunte restano salvate in questo browser.