Sei sulla pagina 1di 41

Computer, Algebra di boole, reti

logiche
( 2022/10/06 )
Outline

Computer

Algebra di Boole e Reti Logiche


Rappresentazione binaria
Computer
Storia

1837, Charles Babbge. “On the Mathematical Power of the Calculating Engine”. Proposta
di un calcolatore meccanico a vapore, in grado di eseguire algoritmi rappresentati su
schede perforate. Mai completato.

1936, Alan Touring. “On computable Numbers, with an application to the


Entscheidungs problem”. Modello astratto che definisce una macchina in
grado di eseguire algoritmi su numeri e simboli.
La Macchina di Touring (MdT)

Una macchina di Turing è definita da un insieme di regole che definiscono il comportamento della
macchina su un nastro di input-output (lettura e scrittura). Il nastro può essere immaginato come
un nastro di carta di lunghezza infinita, diviso in quadratini dette celle. Ogni cella contiene un
simbolo oppure è vuota. Una MdT ha una testina che si sposta lungo il nastro leggendo,
scrivendo oppure cancellando simboli nelle celle del nastro. La macchina analizza il nastro, una
cella alla volta, iniziando dalla cella che contiene il simbolo più a sinistra nel nastro.

Ad ogni passo, la macchina legge un simbolo sul nastro ed in accordo al suo stato interno
(memoria interna):

(1) cambia il suo stato interno, e


(2) scrive un simbolo sul nastro oppure sposta la testina a sinistra o a destra
La Macchina di Touring

Rappresentazione grafica, semplificata, di una MdT :

“Turing's paper ... contains, in essence, the invention of the modern computer and some of the programming
techniques that accompanied it.”

— Minsky (1967)
La Macchina di Touring : esempio

0. set a=0 and b = 1


1. set a = a + b
2. is a bigger or equal than 10 ? if yes, go to
3. if not go to 1.
3. stop

A=0 A yes
A=A+B >=
B=1 10?
Start
no Stop
La Macchina di Touring : esempio

Supponiamo che l'UNITA' LOGICA possa leggere quanto passato dalla TESTINA, interpretando i
SIMBOLI ed associandogli un comportamento specifico.

Di fatto L'UNITA' LOGICA associa ad un simbolo un significato => interpreta un


linguaggio

Ad esempio, ipotizziamo un linguaggio che disponga dei seguenti simboli/significati:


12 = prendi il valore contenuto nella posizione indicata in DX+1, sommalo a quello nella posizione indicata in
DX+2 e metti il risultato nella posizione indicata in DX+3. Poi sposta la testina nella posizione DX+4;

65 = se il contenuto nella posizione indicata in DX+1 è maggiore del contenuto nella posizione indicata in
DX+2 allora muovi la testina in DX+3, altrimenti muovila in DX+4;

82 = muovi la testina nella posizione indicata in DX+1

9 = Stop
La Macchina di Touring : esempio

1 2 3 4 5 6 7 8 9 10 100 101

12 100 101 101 9 ... 1 2

Tt0 Tt1

1 2 3 4 5 6 7 8 9 10 100 101

12 100 101 101 9 ... 1 3

12 = prendi il valore contenuto nella posizione indicata a DX+1, sommalo a quello nella posizione indicata in DX+2 e metti il risultato nella
posizione indicata in DX+3. Poi sposta la testina nella posizione DX+4;

65 = se il contenuto nella posizione indicata in DX+1 è maggiore del contenuto nella posizione indicata in DX+2 allora muovi la testina nella
posizione indicata in DX+3, altrimenti muovila nella posizione indicata in DX+4;

82 = muovi la testina nella posizione indicata in DX+1

9 = Stop
La Macchina di Touring : esempio

1 2 3 4 5 6 7 8 9 10 100 101 102 103

12 100 101 101 65 101 102 9 82 1 ... 1 0 10

Tt0 Tt1 Tt2

12 = prendi il valore contenuto nella posizione indicata in DX+1, sommalo a quello nella posizione indicata in DX+2 e metti il risultato nella
posizione indicata in DX+3. Poi sposta la testina nella posizione DX+4;

65 = se il contenuto nella posizione indicata in DX+1 è maggiore del contenuto nella posizione indicata in DX+2 allora muovi la testina in
DX+3, altrimenti muovila in DX+4;

82 = muovi la testina nella posizione indicata in DX+1

9 = Stop
La Macchina di Touring

1 2 3 4 5 6 7 8 9 10 100 101 102 103

12 100 101 101 65 101 102 9 82 1 ... 1 0 10

O = istruzione
O = posizione (locazione)
O = dato (locazione)
12 = prendi il valore contenuto nella posizione indicata in DX+1, sommalo a quello nella posizione indicata in DX+2 e metti il risultato nella posizione indicata in DX+3. Poi sposta la testina nella posizione DX+4;
65 = se il contenuto nella posizione indicata in DX+1 è maggiore del contenuto nella posizione indicata in DX+2 allora muovi la testina in DX+3, altrimenti muovila in DX+4;
82 = muovi la testina nella posizione indicata in DX+1
9 = Stop

Nonostante nel nastro vi siano sempre e comunque numeri, il loro SIGNIFICATO è


interpretato differentemente (istruzioni, dati, posizioni)
La Macchina di Touring

“Turing's paper ... contains, in essence, the invention of the modern


computer and some of the programming techniques that accompanied it.”

— Minsky (1967)
La Macchina di Touring

https://turingmachine.io/
La Macchina di Touring
Tuttavia.... : architettura di von Naumann

1945. John von Neumann. “First draft of a report on the EDVAC”. Concettualizza il computer come
lo conosciamo noi oggi
Computer : Siamo poi molto distanti?

Da Touring a von Neumann:


Dal MACRO al MICRO

Abbiamo visto “the big picture”, la visione architetturale MACROSCOPICA con cui un
computer si possa concepire e possa funzionare.

NULLA abbiamo detto su come CONCRETAMENTE questo possa accadere, su quali dispositive
fisici reali possa basarsi (idraulici? Meccanici? Elettronici? Ottici? Quantici? etc .. )

Passiamo ora a vedere I fondamenti di una possibile declinazione di CALCOLATORE, la


declinazione nella direzione dei CALCOLATORI ELETTRONICI
Algebra di Boole e Porte Logiche
Algebra di Boole

L' Algebra è una branca della matematica che studia le possibili relazioni fra elementi, insiemi
e relazioni [Roberto '21]

L'algebra di Boole, ad esempio si occupa del caso in cui i possibili elementi siano solo due
simboli (cui puo' venire associato il significato di VERO e FALSO, 0 o 1, … in ogni caso
BINARIO)
Algebra di Boole

Lavorando con I simboli di VERO e FALSO (di cui adotteremo I sinonimi '1' e '0'
rispettivamente), si introducono alcuni operatori:

AND , OR , NOT

AND e OR sono operatori binari (relazionano due simboli), NOT è


unario (lavora con un simbolo solo)
Algebra di Boole

x OR y restituisce VERO se almeno uno dei due (fra x e y) è VERO

x AND y restituisce VERO se entrambi (x e y) sono VERI

NOT x inverte il valore di x (VERO => FALSO oppure FALSO => VERO)
Algebra di Boole e Porte Logiche : tabelle di verità

Possiamo caratterizzare questi operatori in maniera compiuta tramite le tabelle di verità

E costruire frasi del tipo: (A AND B) AND C


(nella costruzione di queste frasi ci appoggiamo ovviamente ad un estensione linguistica che prevede regole
sintattiche e l'introduzione di ulteriori elementi del linguaggio, es: le parentesi per governare le priorità)
Algebra di Boole e Porte Logiche : tabelle di verità

Definiti alternativamente :
AND = *
OR = +
Valgono le seguenti
proprietà
Algebra di Boole e Reti Logiche : tabelle di verità
Rispetto ai possibili valori di A, B e C, quando la scrittura “(A AND B) AND C” risulta
VERA? Possiamo facilmente indagarlo costruendo la tabella di verità:

C B A Y
0 0 0 0
0 0 1 0
0 1 0 0
0 1 1 0
1 0 0 0
1 0 1 0
1 1 0 0
1 1 1 1
Algebra di Boole e Reti Logiche : tabelle di verità
Rispetto ai possibili valori di A, B e C, quando la scrittura “(A OR B) AND C” risulta
VERA? Possiamo facilmente indagarlo costruendo la tabella di verità:

C B A Y
0 0 0 0
0 0 1 0
0 1 0 0
0 1 1 0
1 0 0 0
1 0 1 1
1 1 0 1
1 1 1 1
Algebra di Boole e Reti Logiche : tabelle di verità
Rispetto ai possibili valori di A, B e C, quando la scrittura “(A OR NOT(B)) AND C” risulta
VERA? Possiamo facilmente indagarlo costruendo la tabella di verità:

C B !B A Y
0 0 1 0 0
0 0 1 1 0
0 1 0 0 0
0 1 0 1 0
1 0 1 0 1
1 0 1 1 1
1 1 0 0 0
1 1 0 1 1
Algebra di Boole e Reti Logiche : tabelle di verità
Possiamo anche fare il ragionamento opposto: dalla tabella di verità costruire
l'espressione algebrica che la rappresenti

C B A Y
0 0 0 1 Sostituendo
0 0 1 0 NOT = !
AND = <nulla>
0 1 0 1 OR = +
0 1 1 0
1 0 0 0
1 0 1 1 Y = !A!B!C + !AB!C + A!BC + ABC
1 1 0 0
1 1 1 1
Rappresentazione binaria
Rappresentazione Binaria

Precendentemente abbiamo lavorato con simboli '0' e '1' che non solo erano numeri,
ma, piu' genericamente, simboli. Ad essi potevano associare un significato numerico
o un significato di verita' (V/F) o un qualunque evento fisico del mondo purchè
dicotomico (es: APRI/CHIUDI, ALZA/ABBASSA, etc..)

Proviamo a dare un senso numerico ai simboli che abbiamo precedentemente


manipolato
Rappresentazione Binaria

Associamo quindi a '0' il significato di una quantità pari a 0 e a '1' il significato di una
quantità pari a 1.

Disponendo pero' sempre di due simboli, come rappresentiamo numeri > 1 ?


(ad esempio 33? )

Lo facciamo ESATTAMENTE come lo facciamo in decimale, con una notazione in somma di


potenze
Rappresentazione Binaria

3310 = 3 *101 + 3 * 100


15410 = 1 * 102 + 5 * 101 + 4 * 100

Partendo a contare da DX (posizione 0) e muovendo verso SX, facciamo la


sommatoria dei numeri moltiplicati per una potenza di 10 pari alla loro
posizione.

Nel caso de sistema binario, la potenza diventa 2:

33 = 100001 = 1* 25 + 0 *24+ 0 * 23 + 0 * 22 + 0 * 21 + 1 * 20
Rappresentazione Binaria

33 = 100001 = 1 * 25 + 0 *24+ 0 * 23 + 0 * 22 + 0 * 21 + 1 * 20
Per sommare velocemente è sufficiente ricordarsi le potenze di 2:

20 = 1
21 = 2
22 = 4
23 = 8
24 = 16
25 = 32
26 = 64
27 = 128
28 = 256
29 = 512
210 = 1024
Rappresentazione Binaria

( 67 )10 = ( 1000011 )2

( 211 )10 = ( 11010011 )2

( 10 )10 = ( 1010 )2
Rappresentazione Binaria : operazione SOMMA

( 67 )10 = ( 1000011 )2 ( 10 )10 = ( 1010 )2 1000011 + 1010 = ?

0 1 0 0 0 0 1 1 +

0 0 0 0 1 0 1 0
“0” con riporto di “1”

0 1 0 0 1 1 0 1

E’ anche possible fare la differenza, in forma di somma,con il “complemento a due”


Algebra di Boole e Porte Logiche : reti sommatrici

Questo è un semplice circuito sommatore.


Prende in ingresso due digits e li somma:
l'output è di due digit, uno per la somma (
S = Sum ) ed uno per il riporto ( C = carry)
Algebra di Boole e Porte Logiche : reti sommatrici

E’ il sommatore visto
prima che pero’ prende
in ingresso l’eventuale
riporto da una somma
precedente
Algebra di Boole e Porte Logiche : reti sommatrici

Mettendo in cascata I circuiti sommatori e propaganda il riporto, possiamo riprodurre in


rete logica l’operazione che abbiamo condotto manualmente per fare la somma di due
numeri binari
A3A2A1A0 = 1010

B3B2B1B0 = 0100

S3S2S1S0 = 1110
Algebra di Boole e Porte Logiche : reti sommatrici
Algebra di Boole e Porte Logiche : reti sommatrici
Un piccolo pezzetto..

https://logic.ly/demo/

12 = prendi il valore contenuto nella posizione


indicata a DX+1, sommalo a quello nella
posizione indicata in DX+2 e metti il risultato
nella posizione indicata in DX+3. Poi sposta la
testina nella posizione DX+4;
Un piccolo pezzetto..

12 = prendi il valore contenuto nella posizione indicata a DX+1, sommalo a quello nella posizione indicata in DX+2 e metti il risultato
nella posizione indicata in DX+3. Poi sposta la testina nella posizione DX+4;

Abbiamo quindi visto come quanto enunciato nella macchina di Touring, in forma
teorica, possa avere un riscontro concreto in una macchina costutita da dispositive
elettronici che lavorano in codifica binaria (digitale).

Potrebbero piacerti anche