Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
ASCIIcodifica (= American StandardCode for Information Interchange)proposta dall'organismo distandardizzazione ANSI (= AmericanNational Standard Institute).
Attraversola codifica ASCII, ad ogni carattereviene associato un numero da 0 a 127,quindi rappresentabile su 7 bit. Serappresentata su un byte, ovvero 8 bit,la codifica ASCII ha sempre il bit piùsignificativo uguale a 0. La tabellanell'immagine elenca i caratteri codificati e i loro codici (numeri sia in esadecimale che decimale).Il codice ASCII fu inventato per le comunicazioni fra telescriventi. Per questo motivo, oltre ai caratteriche possiamo trovare nei testi (con codifiche dal 32 al 126), i primi 32 caratteri (detti speciali o nonstampabili) corrispondono a comandi da dare ad una telescrivente. Si veda, per esempio, ilcarattere con codice 4 che codifica il comando "End of transmission", che non è certamente uncarattere che può apparire nei testi. Alcuni di questi caratteri speciali,
Vengono però usati anche nella codifica del testo. Per esempio, il carattere con codifica 10 "New line" viene usato per andare a capo in un testo. La codifica dei caratteri stampabili segue l'ordine naturale (Esempio: la codifica delle lettere minuscole alfabeto inglese di 26 lettere inizia con 97 codifica della "a" e termina con 122 codifica della "z"). Si osservi che nei caratteri stampabili c'è anche lo spazio (Esempio: con codifica 32 nell'alfabeto inglese).
Esempio: la codifica del seguente testo: Ciao a tutti in ASCII è data da un file che ha il seguente contenuto, scritto in esadecimale: 43 69 61 6F 0A 61 20 74 75 74 74 69
Solitamente le codifiche dei file si scrivono in esadecimale perché in questo modo tutti i byte si possono scrivere con lo stesso numero di cifre (ovvero 2). Gli editor di testo semplici (come BloccoNote) permettono di scrivere testo non formattato e di salvare la sua codifica ASCII.
ASCII, però non offre la possibilità di codificare lettere accentate, né linguaggi con caratteri diversi: cirillico, cinese, etc. Per superare questo limite è stato proposto di estendere la codifica ASCII sfruttando il bit più significativo (l'ottavo) che nella codifica ASCII standard non viene utilizzato (ovvero è sempre posto a zero). Un esempio di codifica estesa è la codifica UTF-8. La codifica UTF-8 sfrutta lo spazio che ASCII ha lasciato libero (ovvero i byte che hanno il bit più significativo impostato a 1). In un file testo codificato con UTF-8:- un byte con bit più significativo uguale a 0 codifica un carattere secondo la codifica ASCII standard (di Tabella 6 nell'immagine precedente)
- un byte con bit più significativo uguale a 1 viene usato dalla codifica estesa UTF-8 per codificare caratteri che non fanno parte di quelli codificabili in ASCII
ASCII (caratteri non presenti in Tabella 6 nell'immagine precedente). Si osservi che le codifiche disponibili con il bit più significativo a 1 sono 128 (ovvero il bit più significativo a 1 e tutte le possibili configurazioni degli altri 7 bit). Siccome i caratteri aggiuntivi da rappresentare sono molti di più, in UTF-8 vengono usati più byte per rappresentare un singolo carattere.
Esempio: la codifica in UTF-8 del seguente testo (con caratteri cirillici casuali): russo: Њдщ = Fine è la seguente sequenza di byte (in esadecimale) 72 75 73 73 6F 3A 20 D0 8A D0 B4 D1 89 0A 66 69 6E 65. Si osservi che ognuno dei 3 caratteri in cirillico Њдщ è rappresentato da 2 byte (tutti e tre i caratteri sono codificati dalla stringa di byte D0 8A D0 B4 D1 89), diversamente da quanto avviene nella codifica ASCII standard. Inoltre, ogni byte della codifica estesa (che non è ASCII standard) ha il bit più significativo uguale a 1.
Ad oggi, la codifica UTF-8
richiede da 2 a 4 byte per rappresentare un solo carattere. Premessa: Immagina un byte espresso in binario, quindi una sequenza di 8 simboli che possono essere o 0 o 1. Ogni byte e in generale ogni numero in binario ha 2 bit "particolari" che si chiamano MSB (= most significant bit) e LSB (= less significant bit). Il MSB è quello che sta più a sinistra di tutti, perché è quello che ha il valore maggiore (se convertito in decimale), mentre il LSB è quello più a destra di tutti, perché è quello col valore minore (Esempio: 101 1 a sx è il MSB che vale =4 e 1 a dx è LSB che vale =1). Veniamo a dove siamo noi: Per fare tutte le lettere dell'unicode ASCII bastano 7 bit, ma normalmente si usa il byte come unità di misura e allora il bit più significativo è sempre uguale a 0. Quindi se io in una codifica vedo un bit (che è una coppia di caratteri esadecimali) e traducendolo inbinario vedo che il bit più a sinistra di tutti è zero, allora quello è un carattere unicode (quindi è uno dei caratteri "base", cioè lettere maiuscole, lettere minuscole, etc.). E allora per identificare quel carattere mi basta solo un byte. Se invece convertendo quel numero in binario mi viene fuori che il bit più a sinistra è 1 allora quello non è un carattere unicode, ma un carattere UTF-8. Ciò vuol dire che non c'è solo più un byte a distinguere ogni singolo carattere; quindi, a ogni carattere corrisponderanno più coppie di caratteri esadecimali. Questo nella pratica, vuol dire che in un esercizio: bisogna prendere byte per byte (inizio con la prima coppia di caratteri esadecimali) e guardo quello più a sinistra, se è un numero da 0 a 7 allora è un carattere unicode (quindi vuol dire che quel byte là, rappresenta già da solo il carattere), se invece unbyte inizia con un numero da 8a F il bit più significativo è 1 e quindi non siamo più nell'unicode, ma nel UTF-8. Negli esercizi solitamente si considera una coppia come un byte. Rappresentazione del testo: Ora, parleremo della scomposizione di un testo fino ad arrivare alla sua unità minima, cioè il carattere e ne vedremo la sua codifica binaria. Adesso nello specifico, andremo a vedere come sia possibile rappresentare un testo in un file. FILE = è una sequenza di byte. Quindi la codifica del testo equivale alla traduzione del testo in una sequenza di byte opportuna. Ma da cos'è composto un testo? Qui nell'esempio vi è il testo della prima terzina della Divina Commedia. Esempio: "Nel mezzo del cammin di nostra vita mi ritrovai per una selva oscura che la diritta via era smarrita". Un testo non è altro che una sequenza di righe (in inglese si usa il termine "line"). Ora sipuò vedere qui di seguito le righe che compongono la terzina della strofa della Divina Commedia. Esempio: "Nel mezzo del cammin di nostra vita mi ritrovai per una selva oscura che la diritta via era smarrita". Proseguendo nella divisione di un testo nelle sue singole componenti, possiamo dire che una riga è composta dalle singole parole. Esempio: "Nel - mezzo - del - cammin - di nostra - vita". Ogni parola a sua volta è composta da caratteri, che sono i termini più piccoli in cui può essere composto il testo. Esempio: "c - a - m - m - i - n". Esiste una codifica per codificare il singolo carattere. Il singolo carattere è codificato secondo lo standard ASCII (si pronuncia "aschi"), che associa ad ogni carattere un byte corrispondente, secondo una certa tabella. Esempio: Possiamo vedere nell'esempio che la parola "ritrovai" vieneLa codifica ASCII (American Standard Code for Information Interchange) è un sistema di codifica dei caratteri utilizzato per rappresentare testo in formato digitale. Ogni carattere viene rappresentato da un numero intero, corrispondente alla sua codifica ASCII.
La parola "ritrovai" può essere codificata utilizzando la sequenza delle codifiche ASCII di ciascun carattere. Ad esempio, la lettera "r" è codificata dal numero 114 decimale, la lettera "i" dal numero 105 decimale e così via. Quindi la parola completa "ritrovai" sarà codificata dalla sequenza delle codifiche ASCII di ciascun carattere.
Nell'immagine a destra è riportata la tabella ASCII che mostra la codifica corrispondente per ogni carattere. Ad esempio, la lettera "r" minuscola è codificata dal numero 114 decimale, come abbiamo appena visto.
ASCII permette la codifica dei seguenti caratteri:
- Lettere minuscole e maiuscole
- Cifre decimali da 0 a 9
- Segni di punteggiatura e alcuni caratteri di uso comune
- Lo spazio (usato per separare le parole) e un carattere speciale "a capo" (serve per separare le righe di testo)
FILE DI TESTO (text file) = Un file che contiene la codifica di un testo secondo lo standard ASCII.
Riprendiamo ora l'esempio della strofa della Divina Commedia, e vediamo la codifica in byte.
Esempio:
Innanzitutto, notiamo che il carattere "a capo", codificato dal byte 0A in esadecimale, è presente in un certo punto del file testo, in corrispondenza della posizione dove le righe vengono separate.
Esempio:
Mettiamo anche in evidenza che gli spazi vengono codificati dal byte 20 esadecimale. Per esempio, nella prima riga sono presenti 7 parole e 6 spazi che le separano, questi 6 spazi si possono ritrovare nella riga che va dal primo carattere fino al primo carattere a capo codificato da 0A esadecimale.
Esempio:
Fra uno spazio e il successivo, sono riportate le codifiche dei caratteri della singola parola. Per esempio, della parola "mezzo", che è composta da 5 caratteri, possiamo osservarne la codifica tra lo spazio (20) e l'altro spazio.
(20); si può notare che sono 5 byte, di cui il terzo e il quarto sono identici poiché corrispondono alle due lettere "z" (7A e 7A). Esempio:
Ma cosa non si può rappresentare in ASCII? In ASCII:
- non si può rappresentare il colore del carattere,
- non si può decidere la resa grafica del carattere (cioè il font),
- non si può decidere la dimensione del carattere,
- non si può decidere l'aspetto del carattere (Esempio: grassetto, corsivo...).
Se fossero necessarie tutte queste caratteristiche più avanzate, dovranno essere utilizzati strumenti più avanzati di word processing (Esempio: LaTeX, Libre Office, Word o altri strumenti simili).
Introduzione alla rappresentazione delle immagini:
Come nel caso del testo, anche per le immagini è necessario tradurre un'immagine in sequenza di byte (numeri da 0 a 255). In questo caso l'idea è la seguente