Prof Maltraversi
Il Convertitore in byte ti dice in tempo reale l´equivalente di un determinato numero di Byte in Kilobyte, Megabyte o Gigabyte.|
1
Byte = 8 Bit |
è facile verificare che la quantità di oggetti
numerabili con un certo numero di bits, per esempio
,
è pari a
.
Per esempio con un bit si possono rappresentare
numeri
compresi fra
e
e
con un byte
numeri
compresi fra
e
.
Nella seguente tabella riportiamo i numeri
rappresentabili dato il numero di bit disponibili. Abbiamo visto che con 8 bit
possiamo rappresentare numeri compresi fra
e
tuttavia
è bene osservare che il concetto è generale e non concerne solo la
rappresentazione di numeri. Infatti, più in generale possiamo parlare di numero
di oggetti rappresentabili nel senso che ad ogni configurazione di bit possiamo
pensare di associare un oggetto. Per esempio, questo è quello che si fa con la
codifica ASCIIove ad ogni configurazione di bit in un byte corrisponde un
simbolo; poiché i caratteri ASCIIsono codificati in un byte possiamo
rappresentare un numero massimo di 256 simboli.
|
Numero di bit |
Numero di oggetti rappresentabili |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Per quantificare varie quantità di uso comune (per
esempio capacità di memorizzazione dei dischi, velocità di trasferimento dei
dati) il bit ed il byte sono ormai troppo piccoli. È quindi diventato usuale
avvalersi di multipli, in modo analogo a quello che si fa con altre unità di
misura. È usuale e conveniente utilizzare le potenze della base numerica in cui
si lavora per definire i multipli delle unità di misura. Così accade che per
esempio il chilogrammo (
). I
multipli delle unità di misura delle informazioni sono un po' diversi a causa
del fatto che viene naturale lavorare con le potenze di due. Succede quindi che
l'unità di misura che esprime il "migliaio di byte" non corrisponda esattamente
a 1000 byte bensì alla potenza di 2 che più si avvicina a 1000 byte:
=1024.
Analogamente per gli altri multipli che riportiamo nella tabella seguente.
|
Multiplo di byte |
Numero effettivo di byte |
|
KiloByte (KB) |
|
|
MegaByte (MB) |
|
|
GigaByte (GB) |
|
|
TeraByte (TB) |
|
|
PetaByte (PB) |
|
|
HexaByte (HB) |
|
Gli stessi multipli possono essere applicati ai bit ma si usa in tal caso la lettera "b" minuscola: Kb, Mb e via dicendo. È comune utilizzare questi multipli per le velocità di trasferimento dati. Per esempio le reti locali consentono oggi una velocità di trasferimento di 100 Mb/s, 100 MegaBit al secondo.
I sistemi di numerazione presuppongono la
determinazione di una base, che chiamiamo
.
Per esempio nel sistema decimale
.
In generale, un numero per esempio di 4 cifre che indichiamo con
,
si esprime mediante la seguente espressione
![]()
dove le singole cifre
,
,
,
assumono
valori
nell'intervallo
.
Il nostro sistema decimale è quello indio-arabico
ma non è l'unico ad essere stato utilizzato. I Babilionesi usavano un sistema
sessagesimale in base
.
I computer ragionano in termini del sistema binario (
).
Gli informatici talvolta usano volentieri i sistemi ottale (
)
o esadecimale (
)
perché sono molto facilmente convertibili nel sistema binario.
I caratteri in verde sono una particolare
estensione dovuta a Microsoft. Il codice relativo ad un certo carattere si
ricava sommando il valore in ordinata a quello in ascissa, per esempio per il
carattere
abbiamo
,
risultato espresso in esadecimale. è veramente facile convertire i numeri
esadecimali in binario. Basta sostituire ad ogni cifra decimale il
corrispondente gruppo di 4 cifre binarie dedotto dalla seguente tabella
|
Esadecimale |
Binario |
|
0 |
0000 |
|
1 |
0001 |
|
2 |
0010 |
|
3 |
0011 |
|
4 |
0100 |
|
5 |
0101 |
|
6 |
0110 |
|
7 |
0111 |
|
8 |
1000 |
|
9 |
1001 |
|
A |
1010 |
|
B |
1011 |
|
C |
1100 |
|
D |
1101 |
|
E |
1110 |
|
F |
1111 |
Quindi l'espressione binaria del numero
esadecimale
,
che rappresenta il codice ASCII del carattere
,
sarà
.
La codifica ASCII è l'ingrediente essenziale di qualsiasi testo. è tuttavia opportuno distinguere i testi scritti in semplice ASCII dagli altri. I testi scritti in ASCII non sono altro che una sequenza di byte ognuno dei quali rappresenta un simbolo alfanumerico secondo la tabella ASCII che abbiamo appena visto. Questo tipo di testo viene prodotto ed eventualmente modificato con i cosiddetti editori di testo. Alcuni esempi di editori di testo sono Edit nel sistema DOS, Notepad nel sistema Windows (Notepad è sempre disponibile in Windows, lo potete cercare nel menu avvio, programmi, accessori), Vi, Pico, Emacs nel sistema Linux; ve ne sono tantissimi altri. Sapete tuttavia che esistono molti altri programmi per la produzione di testi che sono comunemente noti come elaboratori di testo o word processor. Questi usano come ingrediente base il codice ASCII ma in realtà usano anche altre codifiche che servono a manipolare i testi e ad arricchirli esteticamente, cosa impossibile con i soli caratteri ASCII. Se per esempio scrivete un testo e lo salvate in un file con uno dei vari programmi Word disponibili, in quel file non vengono memorizzati solo i caratteri ASCII corrispondenti alle varie lettere e numeri che voi avete scritto bensì tante altre informazioni che descrivono il tipo di cartteri usati (si chiamano font: Courier, Time Roman, Helvetica e via dicendo), la loro dimensione, effetti speciali quali grassetto, corsivo, sottolineato e così via, modo in cui si presentano i paragrafi (rientro iniziale, spazio fra un paragrafo e l'altro ...), interlinea ed una miriade di altre possibili caratteristiche. Tutte queste informazioni che vanno oltre alla mera rappresentazione dei caratteri ASCII (che producono gli editori di testo) va sotto il nome di formattazione. Per inciso, questa formattazione non c'entra nulla con la formattazione che concerne lo schema di logico di suddivisione della superficie di un disco magnetico. è evidente che due file contenenti lo stesso identico testo, uno scritto con un editore di testo in caratteri ASCII semplici e l'altro scritto con un word processor (e quindi ``formattato''), hanno dimensioni molto diverse. Chiunque può ripetere l'esperimento che abbiamo fatto insieme in classe scrivendo un testo semplicissimo, pippo tanto per cambiare, prima con un editore di testo e poi con un word processor: abbiamo visto che il file con i caratteri ASCII era fatto di 5 byte (corripondenti ai 5 caratteri della parola ``pippo'') mentre quello formattato era lungo circa 20000 byte!
Essere coscienti di cosa si impiega per scrivere un testo è utile in funzione di quello che si vuole fare in seguito. La formattazione di un testo può essere estremamente utile per metterne in debito rilievo alcune parti ma a volte ci interessa esclusivamente il suo contenuto. In questo secondo caso l'abitudine di scrivere sempre tutto in modo formattato può condurre ad un'esagerata occupazione dello spazio su disco dove vengono memorizzati i file che contengon i testi. Oppure nel caso in cui i testi debbano essere trasmessi attraverso la rete si può causare un inutile sovraccarico della medesima. In questo senso è una cattiva abitudine quella di allegare qualsiasi cosa in modo formattato ai messaggi di posta elettronica anziché scrivere semplicemente il testo dentro al programma di posta elettronica: spedire pippo in ASCII anziché in modo formattato è 20000/5=4000 volte più veloce!
Questo tipo di riguardo nell'uso della rete prende il nome di netiquette. è un concetto che concerne la coscienza che si sta usando uno strumento che serve a tutti e che un uso accorto lo può rendere più efficiente per tutti, quindi alla fine anche per se stessi.
Introduzione
Se hai usato un computer per più di 5 minuti, allora avrai sicuramente letto o
sentito le parole Bits e Bytes. Tutto o quasi nel mondo dei PC si misura in Bits
o Bytes: Capacità dell'Hard disk, della RAM, spazio occupato da un file ecc..
ecc..

Persino pubblicizzando un computer avrai sentito "Questo computer ha un
processore Pentium a 32
bit, 64 megabytes di RAM e un Hard disk da 30 Gigabytes".
Dopo aver letto questo articolo saprai finalmente cosa sono e a cosa servono
Bits e Bytes.
I numeri decimali
Il modo più semplice per capire cos'è un bit è quello di confrontarlo con i
numeri decimali. Un numero può contenere valori da 0 a 9. Normalmente i numeri
sono combinati insieme per creare dei numeri più grandi. Per esempio 6537 ha 4
numeri che lo compongono: il 7 che rappresenta le unità, il 3 le decine, il 5 le
centinaia e il 6 le migliaia.
Potremmo quindi scrivere lo stesso numero in questo modo:
(6*1000) + (3*100) + (5*10) + (7*1) = 6000+300+50+7 = 6357
Un altro modo per esprimere lo stesso numero potrebbe essere quello di scriverlo
in Base-10, ovvero usando l'elevazione a potenza (rappresentata con il simbolo
^):
(6*10^3) + (3*10^2) + (5*10^1) + (7*10^0) = 6000+300+50+7 = 6357
Per effettuare il calcolo basta moltiplicare ogni singola cifra per
10 elevato alla posizione della cifra (partendo dalla posizione 0 per le unità).
Nel nostro caso quindi abbiamo moltiplicato 10^0 per 7, 10^1 per 5, 10^2 * 3 e
10^3 * 6 .
Ovviamente quando contiamo o usiamo i numeri non pensiamo minimamente alla
numerazione in Base-10, ci viene naturale forse perchè abbiamo 10 dita ed
impariamo a contare con quelle fin da piccoli.
Provate però a pensare cosa sarebbe successo nella storia dell'uomo se esso
avesse avuto solo 8 dita! Forse adesso useremmo una numerazione in Base-8. Ad
ogni modo, ci sono delle situazioni in cui la Base-10 è piuttosto scomoda e
quindi ne vengono usate altre per convenienza.
Bits
I computers operano usando la Base-2, conosciuta anche come sistema binario. La
ragione per cui questo tipo di numerazione è preferita alla Base-10 è perchè
essa è molto più semplice da realizzare con la tecnologia attuale. Sarebbe
possibile costruire un computer operante in Base-10, ma questo comporterebbe un
costo molto elevato.
I computer quindi usano le cifre binarie al posto di quelle decimali. La parola
BIT
è appunto l'acronimo della parola inglese
Binary digIT. Se la Base-10 usa quindi 10 cifre ( 0,1,2,3,4,5,6,7,8,9 ) la
Base-2 ne usa solamente 2 ( 0,1 ). Un numero binario è quindi composto solo di
cifre 0 e 1 (ad esempio 1011). Come è possibile però capire il valore del numero
1011 ? Ovviamente non è milleeundici come in Base-10 ma possiamo ricostruire il
vero valore allo stesso modo visto già per i numero decimali, ovvero usando
l'elevazione a potenza in Base-2 invece che in Base-10.
(1*2^3) + (0*2^2) + (1*2^1) + (1*2^0) = 8+0+2+1 = 11
Per meglio comprendere il sistema ecco alcuni numeri decimali, il corrispondente
in Base-10, in binario ed in Base-2:
|
Decimale |
Base-10 |
Binario |
Base-2 |
|
0 |
10^0*0 |
0 |
2^0*0 |
|
1 |
10^0*1 |
1 |
2^0*1 |
|
2 |
10^0*2 |
10 |
2^1*1 + 2^0*0 |
|
3 |
10^0*3 |
11 |
2^1*1 + 2^0*1 |
|
4 |
10^0*4 |
100 |
2^2*1 + 2^1*0 + 2^0*0 |
|
5 |
10^0*5 |
101 |
2^2*1 + 2^1*0+2^0*1 |
|
6 |
10^0*6 |
110 |
2^2*1 + 2^1*1+2^0*0 |
|
23 |
10^1*2 + 10^0*3 |
10111 |
2^4*1 + 2^3*0 + 2^2*1 + 2^1*1 + 2^0*1 |
|
24 |
10^1*2 + 10^0*4 |
11000 |
2^4*1 + 2^3*1 + 2^2*0 + 2^1*0 + 2^0*0 |
Nella figura successiva è possibile vedere in maggiore dettaglio la corrispondenza tra 9 decimale e 1001 binario.

Osservando attentamente la progressione dei numeri da 1 a 5 è possibile capire
come funzionano le addizioni tra numeri binari. La regola è la stessa usata nei
numeri decimali. Se aggiungo 1 a 0 il bit diventa 1. Se aggiungo 1 a 1 il bit
diventa 0 ed il bit successivo (alla sua sinistra) avrà un riporto di 1.
|
Addizioni binarie |
|
|
100 |
+ |
|
001 |
= |
|
101 |
|
|
|
|
|
11 |
+ |
|
1 |
= |
|
100 |
|
|
|
|
|
1001 |
+ |
|
11 |
= |
|
1100 |
+ |
Bytes
I Bits rappresentano l'unità di misura fondamentale in un computer ma raramente
hanno un senso se sono da soli. Nel 99% dei casi essi sono raggruppati in serie
da 8 e sono chiamati Bytes.
Un byte quindi è una serie di 8 bit. Con esso è possibile rappresentare un
massimo di 256 valori, da 0 a 255.
|
1 |
= |
00000001 |
|
2 |
= |
00000010 |
|
3 |
= |
00000011 |
|
4 |
= |
00000100 |
|
5 |
= |
00000101 |
|
|
|
.... |
|
|
|
.... |
|
254 |
= |
11111110 |
|
255 |
= |
11111111 |
In alcune circostanze, ad esempio per campionare la musica nei files Wav o Mp3 vengono usati 2 bytes ovvero 16 bits con cui è possibile rappresentare numeri da 0 a 65535.
|
0 |
= |
0000000000000000 |
|
1 |
= |
0000000000000001 |
|
2 |
= |
0000000000000010 |
|
3 |
= |
0000000000000011 |
|
|
|
..... |
|
|
|
..... |
|
65534 |
= |
1111111111111110 |
|
65535 |
= |
1111111111111111 |
I byte sono generalmente usati per contenere caratteri in un documento di tipo
testo. Per rappresentare i singoli caratteri in un file, viene usata la tabella
ASCII in cui ogni valore tra 0 e 127 rappresenta un carattere alfanumerico. In
alcuni computer il codice ASCII viene esteso anche oltre i 127 bytes in modo da
rappresentare altri caratteri (generalmente quelli stranieri).
Per vedere come il PC salva e rappresenta i dati provate a fare questo test:
Adesso usando Explorer verificare la dimensione del file. Scoprirete che è di 19
bytes, uno per ogni carattere digitato.
Nella tabella seguente vengono mostrati i singoli bytes con il corrispondente
codice ASCII.
|
C |
o |
m |
e |
|
F |
u |
n |
z |
i |
o |
n |
a |
|
. |
|
n |
e |
t |
|
67 |
111 |
109 |
101 |
32 |
70 |
117 |
110 |
122 |
105 |
111 |
110 |
65 |
32 |
46 |
32 |
110 |
101 |
116 |
Come ulteriore prova potete entrare nel file e modificarlo aggiungendo o
togliendo un o o più caratteri. Rileggendo la dimensione del file vi accorgerete
che essa si sarà modifica di conseguenza.
Tabella dei codici ASCII
I primi 32 bytes (da 0 a 31) rappresentano codici speciali (carriage return,
line feed e codici usati per le stampanti), poi seguono i caratteri di
punteggiatura, i numeri ed infine la maiuscole e le minuscole.
0 NUL
1 SOH
2 STX
3 ETX
4 EOT
5 ENQ
6 ACK
7 BEL
8 BS
9 TAB
10 LF
11 VT
12 FF
13 CR
14 SO
15 SI
16 DLE
17 DC1
18 DC2
19 DC3
20 DC4
21 NAK
22 SYN
23 ETB
24 CAN
25 EM
26 SUB
27 ESC
28 FS
29 GS
30 RS
31 US
32
33 !
34 "
35 #
36 $
37 %
38 &
39 '
40 (
41 )
42 *
43 +
44 ,
45 -
46 .
47 /
48 0
49 1
50 2
51 3
52 4
53 5
54 6
55 7
56 8
57 9
58 :
59 ;
60 <
61 =
62 >
63 ?
64 @
65 A
66 B
67 C
68 D
69 E
70 F
71 G
72 H
73 I
74 J
75 K
76 L
77 M
78 N
79 O
80 P
81 Q
82 R
83 S
84 T
85 U
86 V
87 W
88 X
89 Y
90 Z
91 [
92 \
93 ]
94 ^
95 _
96 `
97 a
98 b
99 c
100 d
101 e
102 f
103 g
104 h
105 i
106 j
107 k
108 l
109 m
110 n
111 o
112 p
113 q
114 r
115 s
116 t
117 u
118 v
119 w
120 x
121 y
122 z
123 {
124 |
125 }
126 ~
127 DEL
Tanti Bytes
Quando si sente pronunciare la parola bytes, solitamente c'è sempre un prefisso
davanti ad essa (Mega, Kilo, Giga, ecc..). Scopriamone il significato nella
seguente tabella:
|
Nome |
Abbr. |
Qtà |
|
Kilo |
K |
2^10 = 1,024 |
|
Mega |
M |
2^20 = 1,048,576 |
|
Giga |
G |
2^30 = 1,073,741,824 |
|
Tera |
T |
2^40 = 1,099,511,627,776 |
|
Peta |
P |
2^50 = 1,125,899,906,842,624 |
|
Exa |
E |
2^60 = 1,152,921,504,606,846,976 |
|
Zetta |
Z |
2^70 = 1,180,591,620,717,411,303,424 |
|
Yotta |
Y |
2^80 = 1,208,925,819,614,629,174,706,176 |
Puoi vedere
nella tabella sopra che un Kilo rappresenta circa 1000 byes, un Mega un milione
ed un Giga un miliardo! Per cui quando qualcuno dice "questo PC ha un hard disk
di 2 Giga" significa che nel suo hard disk potrà inserire circa 2 miliardi di
bytes, per la precisione 2.147.483.648 bytes.
Da decimale a Binario
Fino a questo punto abbiamo visto come è possibile convertire un numero binario
in decimale. Adesso vediamo come è possibile effettuare l'operazione contraria.
Ci sono due modi per farlo: usando un programma apposito oppure manualmente.
Un programma che permette di effettuare la conversione è ad esempio la
calcolatrice di Windows (nella modalità
scientifica).

Il cerchio rosso evidenzia le varie modalità di visualizzazione tra cui decimale
(Base-10) e bianrio (Base-2)
Se volessimo convertire il numero decimale 123 in binario basterebbe inserire
123 e poi impostare il sistema binario. Il risultato sarà 11110011, come
riportato nelle 2 figure successive.


Se volessimo raggiungere lo stesso risultato manualmente si potrebbe usare una
tecnica semplice ma molto efficace. In pratica basta scrivere il numero 123 su
un foglio e tracciare accanto ad esso una linea verticale verso il basso che ci
aiuterà nel calcolo. A questo punto dividiamo il numero 123 per 2 (ottenendo 61)
e scriviamo il resto (1) alla destra della riga). Il 61 ottenuto lo scriveremo
invece sotto al numero precedente (123) e ripeteremo l'operazione fino a che il
numero alla sinistra della riga non diventi 1. A questo punto basta leggere la
serie di 1 e 0 ottenuta (dal basso verso l'alto) per ottenere il corrispondente
binario del nostro 123!
