![]() | ![]() |
|
|
FONDAMENTI DI INFORMATICA I
Considerazione sulla
codifica dell'informazione
Siamo abituati a considerare la disponibilità di un numero "illimitato" (o comunque sufficiente) di elementi per rappresentare le informazioni.
Esempio 1
Numeri decimali e operazioni aritmetiche: siamo abituati ad usare tutte le cifre necessarie senza particolari limiti.
Esempio 2
Informazioni da rappresentare: parole della lingua italiana
alfabeto: 21 lettere
lunghezza delle parole non limitata (si può ipotizzare un limite ragionevole Hp: Lmax=26)
alcune sequenze di lettere non hanno significato
Vocabolario italiano
numero di parole esistenti è << 2126
non sono esaurite tutte le sequenze possibili (configurazioni) di lettere
l'introduzione di nuove parole non richiede di aumentare la lunghezza e/o di aumentare il numero di simboli
Codifica dell'informazione
Le informazioni che consideriamo devono essere rappresentate e elaborate da una macchina (calcolatore elettronico).
Aspetto fondamentale:
il numero di elementi "fisici" (elementi di memoria, collegamenti ....) disponibile per contenere la rappresentazione di ogni informazione è finito.
Poiché ogni elemento fisico "contiene" il valore di una cifra binaria, in ogni componente di un calcolatore il numero di cifre binarie disponibili per rappresentare l'informazione è finito. Quindi il numero di informazioni distinte rappresentabili è finito.
Nasce quindi il concetto di non rappresentabilità di informazioni che richiedono un numero di cifre maggiore di quelle disponibili.
Sistema elettronico digitale
Calcolatore:
sistema elettronico costituito da circuiti digitali
In un sistema digitale le informazioni vengono rappresentate, elaborate e trasmesse mediante grandezze fisiche (segnali) che si considerano assumere solo valori discreti. Ogni valore è associato a una cifra (digit) della rappresentazione.
Al contrario, in un sistema analogico le informazioni vengono rappresentate (elaborate e trasmesse) mediante grandezze che possono assumere con continuità tutti gli infiniti valori in un dato intervallo.
Grandezze fisiche utilizzate in un sistema digitale per la rappresentazione dell'informazione:
segnali elettrici (tensione, corrente)
grandezze di tipo magnetico (stato di magnetizzazione)
segnali ottici
Il comportamento fisico dei sistemi di elaborazione riproduce le operazioni di elaborazione e trasmissione delle informazioni rappresentate con le grandezze fisiche (segnali). Si ha quindi una corrispondenza biunivoca tra le operazioni sulle informazioni e le trasformazioni fisiche (operate dai circuiti) sui segnali che le rappresentano.
Rappresentazione delle informazioni con segnali digitali binari
La grandezza fisica che si utilizza (segnale elettrico di tensione) assume solo due valori discreti (binaria)
L'elemento tecnologico base per la realizzazione di circuiti digitali è il transistore il cui funzionamento può essere modellato (in modo molto semplice) come il funzionamento di un interruttore (aperto o chiuso), quindi con due stati fisici, cui corrispondono 2 opportune tensioni (in genere 0V e 5V)..
BIT (binary digit) = cifra binaria. (unità di informazione elementare)
Un bit può assumere due valori che possono essere associati ai simboli:
L(ow) |
H(igh) |
aspetto fisico del segnale |
|
|
aspetto aritmetico |
false |
true |
aspetto logico |
Terminologia e "unità di misura"
1 cifra |
= bit |
|
1 Kilo |
|
|
8 bit |
= byte |
|
1 Mega |
|
|
16 bit |
= word (parola) |
|
1 Giga |
|
|
32 bit |
= double word |
|
|
|
|
64 bit |
= quad word |
|
|
|
|
Rappresentazione binaria
Nella rappresentazione binaria l'alfabeto (l'insieme dei simboli utilizzabili) è costituito dalle cifre 0 e 1.
Un'informazione è rappresentabile da una sequenza di cifre.
Quante sono le informazioni distinte rappresentabili?
se sono disponibili N cifre binarie si possono avere 2N configurazioni diverse e quindi rappresentare al più 2N informazioni distinte
se si devono rappresentare M informazioni distinte sono necessarie N = log2M cifre binarie
Quindi a seconda della cardinalità (M) dell'insieme di valori dell'inform 252j94c azione da rappresentare con una certa variabile, quest'ultima dovrà essere basata su un opportuno numero (N) di bit come indicato dalla relazione precedente.
Rappresentazione di valori numerici
Le classi di valori numerici che si possono rappresentare sono le seguenti:
Numeri naturali
Numeri interi (relativi)
Numeri razionali
Rappresentazione di numeri naturali:
codifica pesata (binario naturale)
La codifica si basa sulla notazione posizionale o "pesata" che adottiamo usualmente per i numeri codificati in decimale.
Terminologia:
Base: B (B=2, B=10, B=3, B=16)
Valori delle cifre: 0 .. B-1
Notazione posizionale: Bk (2k, 10k)
Nella notazione posizionale, in qualunque base, il valore numerico rappresentato da una cifra dipende
dal valore della cifra
dalla posizione della cifra nel numero
Esempio in base 10
P10= 12110 = 1
Data una base B e un numero di cifre disponibili N
i numeri naturali (interi 0) rappresentabili sono
P BN-1
Codifica pesata dei numeri naturali
in base 2
P2= bN-1 2N-1+ bN-2 2N-2+......+ b2 22+ b1 21+ b0 20
bit più significativo: bN-1
bit meno significativo: b0
Ad esempio:
numero di bit disponibili N=3
i valori numerici rappresentabili sono
P cioè 0 P
decimale |
binario |
valore |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Codifica pesata dei numeri naturali in base 2
numero di bit disponibili N=5 i valori numerici P rappresentabili sono 0 P cioè 0 P
decimale |
binario |
valore |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
gli zeri davanti "non contano" ma ci devono essere.
Siamo abituati a non scrivere gli zeri non significativi, lasciandoli impliciti.
Invece i segnali fisici possono solo indicare i valori 0 o 1 per tutti i bit usati per rappresentare un valore numerico, e non possono "sparire".
Per una certa informazione si adotta un numero fisso di bit, che deve essere stabilito a priori, e non una quantità che dipende dal valore di volta in volta rappresentato.
N=6 0 - 63
N=7 0 - 127
N=8 0 - 255
N=10 0 - 1023 (1 K)
N=16 0 - 26 0 - 64.000 (64 K)
N=32 0 - 22 0 - 4.000.000.000 (4 G)
Conversione della rappresentazione pesata
Conversione =
passaggio dalla rappresentazione pesata di un numero naturale da una base b ad una base B.
Le regole di conversione si basano:
sull'uguaglianza dei valori numerici, cioè indipendentemente dalla base di rappresentazione il valore del numero è lo stesso
sul concetto di notazione pesata
Consideriamo i casi di conversione da binario a decimale e da decimale a binario di numeri naturali
Conversione binario decimale (numeri naturali): è molto semplice
P2=111102 =
= 16 + 8 + 4 + 2 + 0 = 3010
Conversione decimale binario
di numeri naturali
Algoritmo di conversione:
si considera l'uguaglianza P = Q b + R, dove
P è il numero decimale da convertire
Q è il risultato
della divisione intera per la base
b (=2)
R è il resto della
divisione intera per la base b
(0 R b-1)
si eseguono ripetute divisioni per la base
b = 2 operando in base B = 10.
Le divisioni considerano come valore da dividere, di volta in volta, il Q
ottenuto al passo precedente. Il procedimento termina quando il valore da
dividere è pari a 0.
Il numero di iterazioni necessarie per arrivare al termine del procedimento determina il numero minimo di bit necessari per rappresentare quel particolare numero in binario.
Conversione decimale binario
di numeri naturali
Esempio: 37 in base 2.
|
|
R0 |
|
Q0 |
|
R1 |
|
Q1 |
|
R2 |
|
Q2 |
|
R3 |
|
Q3 |
|
R4 |
|
Q4 |
|
R5 |
|
Q5 |
|
|
|
Valgono le seguenti uguaglianze:
P=Q0b+R0 = (Q1b+R1)b+R0 = Q1b2+R1b1+R0b0=.....
Quindi R0 R1.... sono le cifre della rappresentazione binaria a partire dal bit meno significativo.
Nell'esempio, il numero minimo di bit è 6.
R5 rappresenta il bit più significativo.
Continuando il procedimento si otterrebbero degli 0 in posizione più significativa.
Conversione decimale binario
della parte frazionaria
Rappresentazione della parte frazionaria:
P = 0.p-1p-2p-3
Nella notazione posizionale per la parte frazionaria il valore del numero rappresentato è dato da:
P10 =0 + d-1 10-1+d-2 10-2+......(d-1 ... cifre decimali)
P2 =0 + b-1 2-1+b-2 2-2 +b-3 2-3 + ...(b-1 ... cifre binarie)
La conversione da binario a decimale è come quella vista per i numeri naturali, ma con le potenze della base negative.
Per la conversione da decimale a binario l'algoritmo di conversione è "duale" rispetto a quello per la parte intera. In questo caso si opera per moltiplicazioni successive (per la base 2) della sola parte frazionaria.
Le cifre (bit) ottenute sono quelle dei riporti sulle unità intere.
Conversione della parte frazionaria
Esempi e osservazioni sulla conversione:
Esempio 1
|
|
b-1 |
|
|
|
|
|
il valore è esattamente rappresentabile in base 2 con un qualsiasi numero ( 1) di bit per la parte frazionaria.
Esempio 2
|
|
b-1 |
|
|
|
b-2 |
|
|
|
|
|
il valore è esattamente rappresentabile in base 2 con un qualsiasi numero ( 2) di bit per la parte frazionaria.
Conversione della parte frazionaria
Esempi e osservazioni sulla conversione:
|
|
b-1 |
|
Esempio 3 |
|
|
b-2 |
|
|
|
|
b-3 |
|
|
|
|
b-4 |
|
|
|
|
|
|
|
è rappresentabile esattamente con 4 (o più) bit per la parte frazionaria.
Se si hanno a disposizione solo 3 bit, la conversione genera il valore approssimato 0.1012 (=0.62510).
|
|
b-1 |
|
Esempio 4 |
|
|
b-2 |
|
|
|
|
b-3 |
|
|
|
|
b-4 |
|
|
|
|
b-5 |
|
|
|
|
b-6 |
|
|
|
|
b-7 |
|
|
|
|
b-8 |
|
|
|
|
|
|
|
non è rappresentabile esattamente ed è periodico (numero illimitato di cifre).
E' molto importante notare che il valore frazionario decimale 0.1 molto frequente nella normale numerazione decimale, non è rappresentabile esattamente in forma binaria. Ciò comporta talvolta risultati approssimati in calcoli eseguiti in base 2, che invece darebbero un risultato esatto in base 10.
Operazioni aritmetiche tra naturali
in notazione posizionale
Le operazioni aritmetiche in base 2 seguono le stesse "regole" di quelle in base 10.
E' fondamentale ricordarsi del problema della rappresentabilità dell'informazione con un numero di bit predefinito.
Ad esempio, nel caso di addizione di due interi rappresentati su N bit, il risultato della somma può richiedere N+1 bit (overflow = traboccamento, o superamento).
I circuiti per eseguire le operazioni
aritmetiche in notazione posizionale sono molto semplici.
Notevole vantaggio della codifica posizionale.
Esempio tabella della somma su un bit (come nel decimale esiste il riporto verso la cifra più significativa)
|
|
b |
|
|
a |
b |
a+b |
|
|
|
|
|
|
|
|
A |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Operazioni aritmetiche: esempi
Somma: N = 4 bit valori rappresentabili da 0 a 15
|
|
|
riporti |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 110 |
riporti |
7 + |
|
0111 + |
|
|
|
1010 |
|
|
|
|
non rappresentabile (overflow) |
Sottrazione: N = 4 bit valori rappresentabili da 0 a 15
|
|
|
prestiti |
|
|
|
|
6 |
|
|
|
6 |
|
|
|
|
|
1 000 |
prestiti |
5 - |
|
0101 - |
|
8 |
|
1000 |
|
|
|
|
non rappresentabile |
Codifica ottale
E' la codifica pesata dei numeri naturali in base B=8, sono quindi disponibili 8 valori delle cifre.
Regola di conversione tra ottale e binario: ogni gruppo di 3 bit corrisponde direttamente ad una cifra ottale come nella tabella accanto. ESEMPIO binario 001 010 110 111 ottale 1 2 6 7 |
valore |
cifra ottale |
binario |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Il generico valore in ottale si ottiene dalla relazione (dove N rappresenta il numero di cifre ottali):
P8=bN-1 8N-1+bN-2 8N-2+......+b2 82+b1 81+b0 80
Codifica esadecimale (HEX)
E' la codifica pesata dei numeri naturali in base B=16, sono quindi disponibili 16 valori delle cifre.
La comodità della rappresentazione HEX sta nella facilità di conversione in binario e viceversa: ogni gruppo di 4 bit corrisponde direttamente ad una cifra HEX, come nella tabella accanto. ESEMPIO binario 0110 1001 1101 0100 HEX 6 9 D 4 Generalmente si premette uno "0" iniziale e una "h" finale. cioè 069D4h |
valore |
cifra hex |
binario |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
A |
|
|
B |
|
|
C |
|
|
D |
|
|
E |
|
|
F |
|
Il generico valore in esadecimale si ottiene dalla relazione (dove N rappresenta il numero di cifre esadecimali):
P16=bN-1 16N-1+bN-2 16N-2+......+b2 162+b1 161+b0 160
Nella documentazione tecnica di calcolatori ed in generale di circuiti logici occorre spesso citare delle configurazioni binarie (codifiche, indirizzi, ecc.).
Sequenze di 16 o 32 bit rappresentati con "1" e "0" sono, per l'uomo, scomode da gestire e difficili da ricordare.
Si ricorre quindi generalmente alla rappresentazione esadecimale (HEX). In particolare la forma HEX è usata nel linguaggio Assembler.
Rappresentazione dei numeri interi (relativi): Codifica in modulo e segno
Il primo bit (più significativo, cioè il più a sinistra) viene utilizzato come bit di segno:
numero positivo
numero negativo
Possono essere rappresentati solo gli interi compresi tra -(2N-1-1) e (2N-1-1). Infatti solo N-1 bit sono disponibili per il modulo.
Nota: 000 +0
100 -0
Rappresentazione dei numeri interi (relativi): Codifica in complemento a 2
All'interno del calcolatore si utilizza una diversa rappresentazione in complemento a 2 dei numeri interi relativi che consente di trattare somme e sottrazioni algebriche in modo indifferenziato e quindi è realizzabile con circuiti aritmetici più semplici.
Rappresentazione in complemento a 2
Date N cifre binarie, sono disponibili 2N configurazioni distinte: di queste
2N-1 vengono utilizzate per rappresentare valori e
2N-1 vengono utilizzate per rappresentare valori < 0.
Ad esempio, se N = 4 sono disponibili 16 configurazioni distinte, con queste posso rappresentare
valori da 0 a 2N-1-1 cioè da 0 a 7
valori < 0: da -1 a - 2N-1 cioè da -1 a -8
N=6 da -32 a +31
N=7 da -64 a +63
N=8 da -128 a +127
N=10 da -512 a + 511
N=16 da 32.768 a +32.767
N=32 da - 2.000.000.000 a
Rappresentazione in complemento a 2
Codifica su 4 bit
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+1
Nota bene: il valore del bit più significativo e' indicativo del segno: valore valore < 0 ma non è il segno: non basta cambiarlo per cambiare segno al numero |
Rappresentazione in complemento a 2
Regola di conversione
Si scrive il valore assoluto del numero da rappresentare in notazione posizionale su N cifre
se il numero da rappresentare è 0, questa è la rappresentazione in complemento a 2
se il numero da rappresentare è < 0, si complementano tutti i bit e si somma 1
In alternativa, partendo dal bit meno significativo, si lasciano inalterati i valori dei bit fino al primo 1 incluso e si complementano i rimanenti bit
Esempio su 4 bit.
P = - 6 610 = 01102
complemento i bit 1001
sommo 1 1010
- 610 = 1010cpl2
Esempi di operazioni aritmetiche tra relativi in complemento a 2
|
|
|
2 + |
|
|
7 |
|
|
9 |
|
|
1001 e' negativo! superamento |
|
|
|
3 + |
|
|
|
|
|
|
|
|
|
|
1 111 |
|
|
1111 + |
1 |
|
0001 |
0 |
|
|
^
| Bit di CARRY
Puo' esserci oppure no, come puo' esserci
o no il bit di overflow.
Codifica di numeri razionali:
Rappresentazione in virgola mobile
(floating point)
Il valore di un numero razionale R è esprimibile con la seguente forma generale per qualunque base b
R = M . b E
R - valore razionale
M - mantissa frazionaria con segno
b - base
E - esponente intero con segno
Quindi, data una base b, un numero rappresentato in virgola mobile può avere la forma
|
|
|
|
E |
M |
Dove M è la rappresentazione della mantissa nella base b e con un certo numero di cifre, ed E è la rappresentazione, anche questa nella base b, dell'esponente da dare alla base.
Il campo di valori rappresentabili dipende da E
la risoluzione (precisione) dipende da M
La rappresentazione si dice normalizzata se la mantissa ha un valore compreso tra l'inverso della base e l'unità, cioè
b-1 M < b0
Codifica di numeri razionali:
Rappresentazione in virgola mobile
(floating point)
Base 10
Es. 1250.3 = 0.12503 . 10 4 normalizzato
|
|
= 0.0012503 . 10 6 non normalizzato
Per sfruttare al meglio le cifre di mantissa si normalizza
Base b = 2
Es. 1011010.011 = 0.101101001100 . b
|
|
In questo esempio, puramente indicativo, la mantissa è di 12 bit e l'esponente di 4 bit.
Codifica di numeri razionali:
rappresentazione in virgola mobile
Standard IEEE floating point su 32 bit
S |
E |
M |
bit di segno della mantissa
bit di esponente E
23 bit di mantissa M (pari a 7 cifre decimali)
Campo di valori rappresentabili
~ -10 38 . . ~-10 -38 0 ~10 -38 . . ~10
38
Risoluzione uno su 8 milioni
NB. I circa 4 miliardi di configurazioni dei 32 bit usati consentono di coprire un campo di valori molto ampio grazie alla distribuzione non uniforme.
Infatti per numeri molto piccoli i valori sono "fitti", ma si vanno "diradando" per i numeri via via più grandi.
Approssimativamente gli intervalli tra valori contigui sono:
per valori di 10000 l'intervallo è di un millesimo
per valori di 10 milioni l'intervallo è di un'unità
per valori di 10 miliardi l'intervallo è di mille
ecc.
Ci sono anche standard IEEE su 64 e su 80 bit che estendono il campo di valori rappresentabili e la precisione.
Informazioni enumerative: caratteri alfanumerici
I caratteri alfanumerici consentono all'uomo di rappresentare tutte le informazioni "scrivibili" (con qualche difficoltà, anche immagini, suoni, sensazioni, ecc.). Si tratta quindi di una codifica molto importante ed utilizzata.
Si devono rappresentare:
lettere maiuscole/minuscole A a .. Z z
spazio
cifre 0 .... 9
segni di interpunzione , : ; .
simboli ! " # % @ ) < =
caratteri di controllo per gestire la visualizzazione, la stampa, la trasmissione dei caratteri (inizio riga, salto di riga, salto pagina
La rappresentazione dei caratteri alfanumerici fa uso di una codifica standard universalmente accettata: codifica ASCII (American Standard Code for Information Interchange)
Codifica ASCII: caratteristiche
7 bit per rappresentare ogni carattere
128 caratteri alfanumerici distinti: le possibili configurazioni vanno da 0000000 a 1111111
la codifica è stata scelta in modo da rispettare alcune "proprietà" dei caratteri:
ordinamento delle cifre
ordinamento delle lettere
introduce le seguenti ulteriori proprietà:
le lettere maiuscole precedono tutte le lettere minuscole
la "distanza" tra una lettera maiuscola e la sua corrispondente minuscola è la stessa per tutte le lettere
ASCII esteso (8 bit) 256 configurazioni:
le prime 128 (da 00000000 a 01111111) sono associate ai caratteri dell'ASCII Standard, le rimanenti 128 (da 10000000 a 11111111) sono associate a lettere accentate..., a caratteri semigrafici ...
Tabella ASCII
bit meno
significativi
bit più significativi
|
|
|
|
|
|
|
|
|
|
NUL |
DLE |
SP |
|
|
P |
|
p |
|
SOH |
DC1 |
|
|
A |
Q |
a |
q |
|
STX |
DC2 |
|
|
B |
R |
b |
r |
|
ETX |
DC3 |
|
|
C |
S |
c |
s |
|
EOT |
DC4 |
|
|
D |
T |
d |
t |
|
ENQ |
NAK |
|
|
E |
U |
e |
u |
|
ACK |
SYN |
& |
|
F |
V |
f |
v |
|
BEL |
ETB |
|
|
G |
W |
g |
w |
|
BS |
CAN |
|
|
H |
X |
h |
x |
|
HT |
EM |
|
|
I |
Y |
i |
y |
|
LF |
SUB |
|
|
J |
Z |
j |
z |
|
VT |
ESC |
|
|
K |
|
k |
|
|
SO |
RS |
|
> |
N |
|
n |
|
|
SI |
US |
|
|
O |
|
o |
DEL |
N.B.
I valori numerici in piccolo sono il valore decimale corrispondente al codice ASCII
La codifica ASCII di un carattere nella tabella è ottenuta prendendo i 3 bit corrispondenti alla colonna, seguiti dai 4 bit corrispondenti alla riga (questi gruppi di bit sono anche facilmente associabili a cifre esadecimali - v.seguito).
Il registro di stato PSR
e i codici di condizione
Il registro di stato contiene alcune informazioni sull'effetto dell'esecuzione di un'istruzione che possono venire analizzate con successive istruzioni.
Una parte del contenuto del registro e' costituita da 4 bit, detti codici di condizione, e indicati con le lettere:
Z (zero), N (negativo), C (carry, riporto) e V (overflow)
PSR
|
Z |
N |
C |
V |
Dopo l'esecuzione di un istruzione i bit del registro contengono un valore che dipende dal risultato dell'istruzione stessa.
Ad es dopo una addizione:
Z vale 1 solo se il risultato dell'addizione e' 0
N vale 1 solo se il risultato dell'addizione e' negativo
C vale 1 solo se l'addizione ha provocato un riporto
V vale 1 solo se l'addizione ha dato luogo ad
overflow, cioe' la somma di due positivi risulta un
numero negativo, oppure la somma di due negativi
risulta un numero positivo
Privacy |
Articolo informazione
Commentare questo articolo:Non sei registratoDevi essere registrato per commentare ISCRIVITI |
Copiare il codice nella pagina web del tuo sito. |
Copyright InfTub.com 2025