Software
 
  Box
Bit, byte, word, char... che cavolo significa?

Tutti i computer usano nel loro interno un sistema elementare di registrazione binaria. Ma non solo i computer, ormai siamo nell'era digitale e il successo si è esteso ad una serie molto grande di apparati elettronici, dalle trasmissioni TV, ai cellulari, alla robotica, ecc.
Quando un computer deve farci conoscere i risultati o ricevere da noi dei dati, magari da tastiera, si avvale di circuiti che provvedono ad una adeguata conversione verso il nostro linguaggio. Vediamo in che modo.

Noi contiamo su dieci dita

Il sistema di numerazione più diffuso è, sicuramente, quello decimale.
L’adozione della numerazione decimale è stata probabilmente imposta dall’anatomia delle mani, perché l’uomo ha imparato a contare sulle dieci dita.

Nel sistema decimale un numero generico si rappresenta mediante una sequenza di cifre disposte secondo la cosiddetta notazione di posizione.
Con questa espressione si intende dire che il valore espresso da un numero non dipende soltanto dalle cifre presenti ma anche dalla posizione che esse occupano all’interno.

Numerazione romana

  I = 1
  V = 5
  X = 10
  L = 50
  C = 100
  D = 500
  M = 1000

  XV   = 15
  XVII = 17

Un esempio classico di notazione numerica non posizionale è costituito dalla numerazione romana. In essa i numeri vengono espressi mediante lettere, ad esempio:

XV rappresenta 10+5 = 15

XVII rappresenta il numero 10+5+1+1 = 17

In questi esempi il simbolo X rappresenta sempre la quantità 10, il simbolo V rappresenta sempre la quantità 5 e il simbolo I rappresenta sempre la quantità 1 anche se occupano posizioni diverse nel numero romano.

Il sistema di numerazione decimale fa uso di dieci cifre da zero a nove (0, 1, 2, 3, 4, 5, 6, 7, 8, 9), in cui l'effettivo valore di ciascuna cifra dipende dalla sua posizione nel numero.
La numerazione decimale viene chiamata anche numerazione in base 10.
Il peso di una cifra è uguale alla base, detta anche radice (radix), del sistema di numerazione (10 in questo caso) elevata alla potenza uguale alla posizione della cifra nel numero, la quale si incrementa da destra a sinistra a partire da 0.

   

Se contiamo la posizione occupata dalla cifra, partendo da destra e dal numero 0, la posizione ci da l’esponente del peso.

   

 

   1 5 8 3
   | | | |_ unità
   | | |___ decine
   | |_____ centinaia
   |_______ migliaia

Ad esempio nel numero 1583:
la cifra 3 che è al primo posto a partire da destra, rappresenta 3 unità,
la cifra 8 in seconda posizione rappresenta 8 decine, cioè ha un peso dieci volte maggiore rispetto alla cifra nella posizione precedente,
la cifra 5 che è in terza posizione rappresenta 5 centinaia, cioè ha un peso cento volte maggiore rispetto alla posizione delle unità e
la cifra 1 che è in quarta posizione rappresenta 1 migliaio, cioè tale posizione ha un peso mille volte maggiore rispetto alla posizione delle unità.

Si nota cioè che il peso di una cifra rispetto a quella della posizione immediatamente a destra è di dieci volte maggiore.
In sostanza infatti il numero 1583 non è altro che la somma dei valori rappresentati dalle cifre in ciascuna posizione, infatti si legge mille-cinquecento-ottanta-tre.

Se esiste una parte frazionaria, a destra della virgola, essa si valuta con potenze negative.

   

 

I computer contano su 2 dita

Un elaboratore è fondamentalmente costituito da una serie di interruttori che possono essere chiusi o aperti. I circuiti in cui i componenti elettronici sono impiegati come interruttori, assumono due stati ben definiti: o lavorano in saturazione oppure all'interdizione, cioè si comportano come interruttori chiusi, oppure come interruttori aperti. In tali circuiti è possibile associare una cifra a ciascuno stato, ad esempio la cifra zero ad un interruttore aperto e la cifra 1 ad un interruttore chiuso (o viceversa).
Negli elaboratori elettronici i dispositivi fisici dove si segnano i numeri sono le memorie, le quali possono essere realizzate in vario modo. Ad esempio, un condensatore può essere carico oppure scarico, un elemento di superficie di un disco può essere magnetizzato oppure smagnetizzato, e così via. In tutti i casi, queste celle elementari dispongono di due stati fisici, ai quali vengono attribuiti convenzionalmente i valori di 0 e di 1. Da ciò consegue l'uso della numerazione in base 2, in cui ogni cifra, invece che variare da 0 a 9 può variare da 0 a 1 (aperto, chiuso). Questo sistema di numerazione viene chiamato binario.
Il sistema di numerazione binaria è responsabile di gran parte dell'architettura dell'elaboratore: della massima lunghezza di un numero che può essere immagazzinato in una cella di memoria, della quantità di memoria totale che esso può avere, e persino della grandezza dello schermo visualizzato.
La numerazione binaria segue le stesse regole di quella decimale. In questo caso si usano solo due simboli o cifre (0, 1). Le cifre di un numero binario vengono chiamate "bit" (dall'inglese BInary digiT = cifra binaria) e la base è allora 2, per cui il peso che ogni cifra ha all'interno del numero binario è dato da una potenza di 2. Ad esempio, dato il numero binario (a 6 bit) 011101, si ha:

   

La cifra all'estrema sinistra viene detta cifra più significativa (most significant bit, MSB) in quanto è la cifra col fattore moltiplicativo più elevato; quella all'estrema destra viene, invece, detta cifra meno significativa (less significant bit, LSB) in quanto è la cifra col fattore moltiplicativo più piccolo.

Il bit più a destra, alla posizione zero, viene indicato come bit zero, quello subito alla sua sinistra bit uno, poi bit due e così via, proseguendo verso sinistra.

Il valore decimale viene calcolato sommando i valori di ciascun bit moltiplicato per il proprio peso.

   

Semplificato in

   

 

decimale     binario
   4             100
   7             111
  10            1010
  15            1111
  67         1000011
 256       100000000

Come è possibile vedere, anche i numeri più piccoli richiedono molte cifre in binario. Le lunghe sequenze di zero e 1 non creano problemi all'elaboratore, ma sono decisamente fastidiose per chi programma.
La numerazione decimale, d'altra parte, non si adatta bene a quella binaria. Per rappresentare le singole cifre decimali da 0 a 7 occorrono 3 bit, da 7 a 15 ne occorrono 4, quindi, per rappresentare una decina, 3 bit sono pochi e 4 sono molti.

decimale    binario   esadecimale

    0        0000          0
    1        0001          1
    2        0010          2
    3        0011          3
    4        0100          4
    5        0101          5
    6        0110          6
    7        0111          7
    8        1000          8
    9        1001          9
   10        1010          A
   11        1011          B
   12        1100          C
   13        1101          D
   14        1110          E
   15        1111          F

Per aggirare questo problema, si utilizza il sistema di numerazione esadecimale o in base 16 (abbreviato Hex). In questo sistema ogni cifra è maggiore di quella che la precede a destra, di un fattore 16. Perciò si avrà in questo caso una cifra delle unità, una cifra dei 16, una cifra dei 256 e cosi via.

Abbiamo visto che, in binario, servono due diversi simboli (0 e 1) e in decimale occorrono 10 simboli, così, in esadecimale, avremo bisogno di sedici simboli.
In questo caso, dovremo essere in grado di numerare da zero fino a 15 e, quindi, occorrono nuovi simboli per rappresentare i numeri compresi tra 10 e 15.
Per i primi dieci si useranno le cifre da 0 a 9, per i restanti useremo le sei lettere A, B, C, D, E e F che rappresenteranno, rispettivamente, i numeri da 10 a 15.

Notiamo subito che, con questo sistema, bastano 4 bit per rappresentare tutte le cifre esadecimali.
Quindi, le numerazioni binaria ed esadecimale, sono compatibili ed è facilitata la conversione da un sistema all'altro.

decimale    binario   esadecimale

    0      0000 0000       00
    7      0000 0111       07
   10      0000 1010       0A
   15      0000 1111       0F
   63      0011 1111       3F
  100      0110 0100       64
  200      1100 1000       C8
  255      1111 1111       FF

Per questa ragione la numerazione esadecimale è spesso utilizzata nella programmazione degli elaboratori al posto della numerazione binaria. Essa è più compatta (una cifra al posto di quattro) e si adatta bene a quella binaria, perciò molti aspetti del linguaggio macchina sono meglio rappresentati in questo modo.

Con 8 bit possiamo rappresentare i numeri da 0 a 255 e, mentre in decimale, per il 255 ci vogliono 3 cifre, ne bastano solo 2 in esadecimale.
Ma quello che si può notare principalmente, è molto più facile convertire il numero da binario in esadecimale (e viceversa) che non da quello decimale.
Basta prendere un gruppo di 4 bit (detto nibble) alla volta e fare la conversione (e viceversa).

La numerazione esadecimale segue le stesse regole di quella binaria e decimale. In questo caso si usano 16 simboli (da 0 a F) e la base è 16, per cui il peso che ogni cifra ha all'interno del numero esadecimale è dato da una potenza di 16. Ad esempio, dato il numero hex 6F4A, sapendo che F = 15 ed A = 10, si ha:

   

Il valore decimale viene calcolato sommando i valori di ciascun simbolo moltiplicato per il proprio peso.

byte e word

Si è visto che 8 bit possono contenere 256 valori differenti. Questo può essere un numero adeguato per essere preso come unità di misura in informatica.

char            =  8 bit
byte            =  8 bit
word  = 2 bytes = 16 bit
dword = 4 bytes = 32 bit

E' nato così il byte (simbolo B in maiuscolo, perchè b è generalmente usato per indicare il bit), come unità d'informazione composta da 8 bit.
Permette, ad esempio, di contenere il codice di un carattere, come una lettera o una cifra.

Memorie, dischi fissi, CD, DVD, ecc. usano, come unità di misura della capacità, il byte.

kilobyte (kB) = 1024 bytes
Megabyte (MB) = 1024 kB = 1 048 576 bytes
Gigabyte (GB) = 1024 MB = 1 073 741 824 bytes
Terabyte (TB) = 1024 GB = 1 099 511 627 776 bytes

Prima del 1998, 1 kilobyte era considerato come un'entità di 1024 bytes ed i suoi multipli, di conseguenza.

kilobyte (kB) = 1000 bytes
Megabyte (MB) = 1000 kB = 1 000 000 bytes
Gigabyte (GB) = 1000 MB = 1 000 000 000 bytes
Terabyte (TB) = 1000 GB = 1 000 000 000 000 bytes

Dal dicembre 1998, l'organismo internazionale IEC ha deciso che 1 kilobyte vale 1000 bytes ed i multipli di conseguenza.

kibibyte (kiB) = 1024 bytes
Mebibyte (MiB) = 1024 kiB = 1 048 576 bytes
Gibibyte (GiB) = 1024 MiB = 1 073 741 824 bytes
Tebibyte (TiB) = 1024 GiB = 1 099 511 627 776 bytes

L'IEC ha anche definito
il kilo binario (kibi),
il mega binario (Mebi),
il giga binario (Gibi),
il tera binario (Tebi).

Ultima modifica  

 
Privacy Policy Cookie Policy