2.2 – Codifica dell’informazione

Obiettivi della lezione

  • Comprendere i codici ASCII e Unicode: Esaminare la struttura e la funzione dei sistemi di codifica dei caratteri.
  • Distinguere tra ASCII e Unicode: Conoscere le differenze chiave e l’importanza di ciascun sistema.
  • Applicare i codici di caratteri nella programmazione e nei database: Analizzare come vengono utilizzati nei sistemi informatici e nelle applicazioni web.
  • Applicare il sistema binario nella codifica dei dati: Analizzare come le immagini, l’audio e i video vengono rappresentati in formato digitale utilizzando il sistema binario.

Introduzione ai sistemi di codifica dei caratteri

In questa lezione, esploreremo i due principali sistemi di codifica dei caratteri utilizzati nell’informatica: ASCII e Unicode. Questi sistemi sono fondamentali per la rappresentazione dei testi nei computer e nei dispositivi digitali, permettendo la comunicazione tra diverse piattaforme e linguaggi.

Codice ASCII (American Standard Code for Information Interchange)

Cos’è il codice ASCII?

Il codice ASCII è un sistema di codifica dei caratteri sviluppato negli anni ’60 che utilizza 8 bit (nella sua versione estesa) per rappresentare ogni carattere, permettendo la codifica di 256 caratteri diversi. Questi caratteri includono:

  • Lettere maiuscole e minuscole (A-Z, a-z)
  • Numeri (0-9)
  • Simboli di punteggiatura (., !, ?, etc.)
  • Caratteri di controllo (come il ritorno a capo, la tabulazione, ecc.)
  • Alcuni simboli

Esempi di caratteri ASCII

  • A: 65
  • a: 97
  • 0: 48
  • Spazio: 32

Importanza dell’ASCII

L’ASCII è stato il primo standard di codifica ampiamente adottato e ha costituito la base per molti altri sistemi di codifica. È ancora utilizzato oggi nei sistemi legacy e nei protocolli di comunicazione di base.

Limiti di ASCII

La codifica ASCII (American Standard Code for Information Interchange) è uno standard di codifica per rappresentare i caratteri di testo in computer e altri dispositivi che utilizzano il testo. Sebbene l’ASCII sia ampiamente utilizzato e ha avuto un grande impatto nello sviluppo della tecnologia informatica, presenta alcuni limiti significativi:

Limitato a 256 Caratteri

L’ASCII standard utilizza 8 bit per rappresentare ciascun carattere, il che consente un totale di 256 caratteri (da 0 a 255).

Nessun Supporto per Lingue Non Inglesi

L’ASCII standard non include caratteri speciali utilizzati in altre lingue, come le lettere accentate in francese o spagnolo, i caratteri speciali in tedesco, o i caratteri non latini come quelli cinesi, giapponesi, coreani, arabi, ecc. Questo limita l’uso dell’ASCII alle sole lingue basate sul latino senza caratteri accentati.

Mancanza di Caratteri di Formattazione

L’ASCII non include caratteri per la formattazione del testo come i simboli per il grassetto, il corsivo, il sottolineato, ecc. Questo limita le capacità di formattazione del testo.

Problemi di Interpretazione

Alcuni caratteri di controllo ASCII (come il carattere di fine del file o il carattere di ritorno a capo) possono essere interpretati in modo diverso su diversi sistemi operativi, il che può causare problemi di compatibilità tra piattaforme.

Codice Unicode

Cos’è il codice Unicode?

Il codice Unicode è un sistema di codifica sviluppato per superare le limitazioni dell’ASCII, permettendo la rappresentazione di caratteri da tutti i sistemi di scrittura del mondo. Unicode utilizza diversi formati di codifica:

  • UTF-8: Utilizza da 1 a 4 byte (8-32 bit) per carattere. È compatibile con l’ASCII e molto efficiente per i testi in lingua inglese.
  • UTF-16: Utilizza da 2 a 4 byte per carattere. È spesso utilizzato nei sistemi operativi moderni.
  • UTF-32: Utilizza 4 byte per carattere, offrendo un accesso più semplice ma occupando più spazio.

Esempi di caratteri Unicode

  • A: U+0041
  • あ (hiragana giapponese): U+3042
  • 🙂 (emoji sorridente): U+1F642

Importanza dell’Unicode

Unicode è essenziale per la globalizzazione e l’interoperabilità delle tecnologie dell’informazione. Permette di rappresentare testi in qualsiasi lingua, inclusi simboli e emoji, facilitando la comunicazione internazionale e l’inclusività digitale.

Differenze chiave tra ASCII e Unicode

  • Gamma di Caratteri: ASCII supporta solo 256 caratteri, mentre Unicode supporta oltre 143.000 caratteri.
  • Compatibilità: ASCII è limitato ai caratteri inglesi, mentre Unicode supporta tutti i sistemi di scrittura del mondo.
  • Efficienza: UTF-8 (Unicode) è compatibile con l’ASCII e offre una codifica efficiente per i testi in lingua inglese, ma può utilizzare più byte per caratteri complessi.

Applicazioni pratiche dei sistemi di codifica del testo

Nel web

La maggior parte delle pagine web moderne utilizza UTF-8 per garantire la compatibilità con tutte le lingue e simboli. Questo standard è supportato dai principali browser e sistemi operativi.

Nei database

I database moderni utilizzano Unicode per memorizzare dati testuali, garantendo che tutte le informazioni siano rappresentate correttamente, indipendentemente dalla lingua.

Nei sistemi operativi

I sistemi operativi come Windows, macOS e Linux utilizzano Unicode internamente per rappresentare i testi nelle interfacce utente, nei file system e nelle applicazioni.

Applicazioni dei sistemi di codifica in informatica

I sistemi di numerazione sono fondamentali per la codifica dei dati digitali, che includono immagini, audio e video. Ogni tipo di dati ha una rappresentazione specifica in formato binario.

Codifica audio

L’audio digitale è rappresentato da una sequenza di campioni, dove ogni campione è un valore binario che rappresenta l’ampiezza dell’onda sonora in un dato istante. La frequenza di campionamento (numero di campioni al secondo) e la risoluzione in bit (numero di bit per campione) determinano la qualità dell’audio.

La digitalizzazione dell’audio è un processo in cui un segnale audio (come la tua voce o un suono) viene trasformato in un formato digitale, ossia in numeri che il computer può capire e manipolare. Vediamo le tre fasi principali di questo processo in modo semplice:

  1. Campionamento: Immagina di ascoltare una canzone e fare delle “foto” del suono a intervalli regolari di tempo. Ogni “foto” è un campione. Il campionamento consiste quindi nel catturare questi “scatti” del suono molte volte al secondo. La frequenza con cui si prendono questi campioni è detta “frequenza di campionamento” (es. 44.1 kHz, che significa 44,100 campioni al secondo).
  2. Quantizzazione: Ora che abbiamo tanti campioni, dobbiamo convertire ciascuno di questi in numeri. La quantizzazione consiste nel trasformare l’intensità di ogni campione (cioè quanto è forte o debole il suono) in un numero specifico. Più livelli di quantizzazione ci sono, maggiore è la precisione con cui il suono viene rappresentato. Quindi, una quantizzazione più precisa permette di avere un audio più fedele all’originale.
  3. Codifica: Una volta che abbiamo tutti questi numeri, dobbiamo organizzarli in un formato che possa essere facilmente compreso e letto da computer o dispositivi audio. La codifica consiste proprio nel mettere insieme questi numeri in un file (come un MP3 o un WAV), che può essere archiviato o riprodotto. La codifica può anche comprimere i dati per occupare meno spazio (come con l’MP3), pur mantenendo un suono di qualità accettabile.
Tipologie di Formati Audio
  • MP3 (MPEG-1 Audio Layer III): Un formato di compressione con perdita che riduce le dimensioni del file mantenendo una qualità audio accettabile. È ampiamente utilizzato per la distribuzione di musica digitale.
  • WAV (Waveform Audio File Format): Un formato non compresso che offre la massima qualità audio, spesso utilizzato per l’editing e la produzione audio professionale.
  • AAC (Advanced Audio Coding): Un formato di compressione con perdita che offre una qualità migliore rispetto all’MP3 a parità di bitrate, utilizzato principalmente su piattaforme come iTunes.

Codifica delle immagini

Le immagini digitali sono rappresentate da una matrice di pixel, dove ogni pixel è codificato da un valore binario che rappresenta il colore. Il formato più comune è il formato RGB, dove ogni colore è rappresentato da tre componenti (rosso, verde e blu), ciascuna con un valore binario di 8 bit (256 valori possibili).

https://rgbcolorpicker.com

Tipologie di Formati Immagine
  • JPEG (Joint Photographic Experts Group): Un formato di compressione con perdita che riduce le dimensioni del file mantenendo una qualità accettabile per le foto. È molto utilizzato per le immagini digitali, soprattutto nelle fotocamere e sui siti web.
  • PNG (Portable Network Graphics): Un formato di compressione senza perdita che mantiene la qualità dell’immagine originale, ideale per grafici e immagini con trasparenze.
  • GIF (Graphics Interchange Format): Un formato che supporta immagini animate e trasparenze, con una tavolozza limitata a 256 colori.

Codifica dei video

I video digitali sono una sequenza di immagini (frame) codificate in modo simile alle immagini statiche, ma con tecniche di compressione aggiuntive per ridurre la quantità di dati necessari. La compressione video può essere con perdita (riducendo la qualità per diminuire la dimensione del file) o senza perdita (mantenendo la qualità originale).

Tipologie di Formati Video
  • MP4 (MPEG-4): Un formato di compressione con perdita che combina video e audio, ampiamente utilizzato per la distribuzione di video su internet. Supporta vari codec e permette una buona qualità a dimensioni di file relativamente piccole.
  • AVI (Audio Video Interleave): Un formato contenitore che può utilizzare vari codec per la compressione video e audio, spesso utilizzato per l’archiviazione e la riproduzione locale. È noto per la sua compatibilità e versatilità.
  • MKV (Matroska Video): Un formato contenitore flessibile che supporta molteplici codec e tracce, ideale per la memorizzazione di video ad alta definizione e la combinazione di multiple tracce audio e sottotitoli.

Esercitazioni pratiche

  1. Conversione di Caratteri in Codici ASCII:
    • Convertire lettere e simboli in codici ASCII e viceversa.
    • Esempio: Convertire “A” in 65 e “97” in “a”.
  2. Utilizzo di Unicode:
    • Scrivere e testare codici Unicode per caratteri speciali.
    • Esempio: Utilizzare U+1F642 per visualizzare l’emoji sorridente 😊.
  3. Creazione di tabelle di conversione:
    • Creare una tabella che elenca caratteri comuni con i loro equivalenti ASCII e Unicode.
  4. Applicazione della Codifica Binaria:
    • Rappresentare un’immagine semplice in formato binario utilizzando il sistema RGB.