Pour faire de l'informatique il faut un truc qui transporte de l'information.
On appelle ça le bit.
Le bit à deux états (si il en avait moins il ne pourrait pas porter de l'information).
On note 0 le premier état, et 1 le deuxième.
Le 0 est represente les valeurs fausses.
Le 1 est represente les valeurs vraies.
Porter l'information ne suffit pas, il faut la manipuler, pour ça il y a la logique.

La logique c'est, par exemple, exprimer "si A alors B"

La porte non inverseuse
io
00
11
La porte inverseuse
io
01
10
La porte et (and)
i0i1o
000
100
010
111
La porte ou (or)
i0i1o
000
101
011
111
La porte non et (nand)
i0i1o
001
101
011
110
La porte non ou (nor)
i0i1o
001
100
010
110
La porte idendite (exor)
i0i1o
000
101
011
110
La porte ou exclusive (xor)
i0i1o
001
100
010
111

un peu de mémoire
si set passe à 1, out devient 1 et ne peut plus redescendre


pour redescendre out, il faut ouvrir la boucle
par example en appliquant 1 à clr sur le schemas ci-dessous



soit, avec l'algèbre de Morgan ( (!a&&!b) <=> !(a||b) ):
une cellule memoire asynchrone



si i0 et i1 sont à 1, _q0 et _q1 passent à 1
si i0 et i1 sont à 0, _q0 et _q1 gardent leurs états
si i0 = 0 et i1 = 1, _q0 ppv 1 et _q1 ppv 0
si i0 = 1 et i1 = 0, _q0 ppv 0 et _q1 ppv 1
q0q1i0i1_q0_q1stable
0000110
1000101
0100011
1100000
0010010
1010000
0110011
1110000
0001100
1001101
0101000
1101000
0011001
1011000
0111000
1111000

mettons tous ça dans une boîte ,
avec s à la place de i0, c à la place de i1, o à la place de _q1 :

un verrou maintenant (latch),
si l = 0 alors s = c = 0 soit out est memorisé
si l = 1 alors s = in et c = !in soit out = in



dans une boîte !

une bascule (d latch),


dans une boîte !

un compteur 2 bits synchrone,



dans une boîte !

un compteur 3 bits synchrone,
d'une manière générale, i(n)=o(n) ^ (& i(n+1 ... N-1))




dans une boîte !

à vous de jouer (mozilla, firefox seulement)