Rappresentazione dei dati

Nel computer dati, programmi e numeri vengono tutti rappresentati in notazione binaria, ovvero con sequenze di bits, che sono elementi che possono assumere 2 valori, 0 od 1. Questo e' dovuto a come sono costruiti i circuiti elettronici, che devono lavorare ad alte frequenze in modo che i dati elaborati siano immuni ai disturbi elettrici e quindi sono basati su molte componenti semplici, invece che su poche componenti complesse.


Una sequenza di 8 bits costituisce un byte, ed e' la minima quantita' di memoria che si puo' indirizzare, ed usata come l'unita' di misura della memoria.
Si parla poi di Kbyte, Mbyte, Gbyte, ove 1024 byte sono 1 kbyte, 1024 kbyte sono 1 Mbyte,1024 Mbyte 1 Gbyte, procedendo per multipli di 2; tuttavia a volte i costruttori di hard-disk lavorano a multipli di 10, e per loro 1 Megabyte e' un un milione di byte. Questa diversa nomenclatura puo' generare confusione.

In informatica e' comune trovare indicati numeri in base otto (ottale), oppure in base 16 (esadecimale), con le lettere da A ad F a rappresentare le cifre da 10 a 15; la base esadecimale e' usata perche' con 2 cifre esadecimali si rappresenta esattamente un byte. In questo link la rappresentazione di alcuni interi, in diverse basi.

I numeri negativi sono rappresentati come complemento a 2, in modo da utilizzare lo stesso hardware per somme e sottrazioni: per ottenere il complemento a 2 si invertono i singoli bit del numero e si aggiunge 1, per esempio: 0000 0101 , che e' 5, diventa: 1111 1011 , che vale -5. I negativi hanno il primo bit 1, i positivi 0. Un byte contiene 256 valori, interi senza segno da 0 a 255 oppure interi con segno da -126 a 127.

I float per la rappresentazione vi diviso in una parte frazionaria ed in un esponente, in genere secondo lo standard IEEE 754, i numeri possono essere rappresentati con precisione diversa: la singola precisione usa 4 bytes; 32 bits, di cui:1 bit per il segno, 8 bit per l'esponente (che va da -126 a 127) e 23 bits per la parte frazionaria, quindi circa 7 cifre decimali. La doppia precisione usa 64 bits: 11 per l'esponente e 52 per la parte frazionaria.

Per i caratteri si usa in genere il codice ASCII, in origine l'ASCII usava 7 bits per ogni carattere: con i numeri da 0 a 31 corrispondenti a caratteri di controllo, per stampanti od altro, e da 32 a 127 ai caratteri stampabili, come numeri e lettere. L'ASCII e' stato poi esteso, per comprendere vari caratteri grafici, lo standard ISO 8859 definisce un ASCII che usa 8 bits, ci sono diverse varianti dell'ISO-8859, ISO-8859-1 e' quello usato in Europa, detto anche ISO_latin 1, la sua versione col simbolo dell'euro e' l'ISO-8859-15; la Microsoft ha una variante sua, chiamata: "Code page 1252". In questo link la tabella dell'ISO 8859-1

Per rappresentare qualunque carattere, compresi quelli cinesi e tutte le loro varianti, e' stato proposto lo standard Unicode (ISO-10646), che utilizza l' UTF (Unicode Transformation Format), per far corrispondere sequenze di bits a caratteri. L'UTF-8 si basa su parole di 8 bits (1 byte) per la codifica dei caratteri; ed usa da 1 a 4 byte per carattere: i primi 128 valori, che iniziano col bit 0, utilizzano 1 byte per carattere e corrispondono all'ASCII, i successivi 1920 (dal 128 al 2047) utilizzano 2 bytes per codificare greco, cirillico, copto,armeno, ebraico, arabo. Per gli altri caratteri si usano 3 o 4 bytes.

UTF-16 utilizza parole di 16 bits per codificare i caratteri, viene utilizzato da Java, ed e' la rappresentazione interna dei dati di Windows e Mac OS-X.

Ovviamente anche le istruzioni sono rappresentate come sequenze di bits. I dettagli della rappresentazione dipendono dall'architettura della CPU, ad ogni modo in genere c'e' un codice numerico che individua l'istruzione (somma,salto,spostamento dato nei registri etc.) seguito da 1 o piu' codici che indicano gli operandi, e possono essere valori numerici od indirizzi di variabili o registri.

Immagini e suoni possono essere rappresentate in molti modi diversi, a seconda del formato usato. Semplificando molto, ma molto, possiamo dire che le immagini sono in genere rappresentate da una matrice di valori, ogni elemento della matrice corrisponde ad un punto dell'immagine e contiene 3 numeri, corrispondenti alle intensita' dei 3 colori di base.
I suoni possono essere espressi con valori di intensita' sonora misurati ad intervalli fissi, ad esempio un CD-ROM musicale contiene suoni campionati a 44.1 KHz, stereo, con 16 bits per canale. Per i formati compressi, tipo gli mp3, le cose sono ovviamente molto piu' complicate.