diff --git a/slides/cours_4.md b/slides/cours_4.md
index 93c493cf5fd92d7b1d6d3543b9932e7e7e2b7bc9..d1300137396fd53962462d944d54e193b00f12eb 100644
--- a/slides/cours_4.md
+++ b/slides/cours_4.md
@@ -73,7 +73,8 @@ int main() {
 
 ## Exercice:
 
-* Réusiner le code se trouvant sur [Cyberlearn]()
+* Réusiner le code se trouvant sur
+  [Cyberlearn](https://cyberlearn.hes-so.ch/mod/resource/view.php?id=1627712).
 
 # Tableau à deux dimensions (1/4)
 
@@ -187,6 +188,53 @@ for (int i = 0; i < NX; ++i) {
 
 ## Poster le résultat sur `Element`
 
+# Types énumérés (1/2)
+
+* Un **type énuméré**: ensemble de *variantes* (valeurs constantes).
+* En `C` les variantes sont des entiers numérotés à partir de 0.
+
+    ```C
+    enum days {
+        monday, tuesday, wednesday,
+        thursday, friday, saturday, sunday
+    };
+    ```
+* On peut aussi donner des valeurs "custom"
+
+    ```C
+    enum days {
+        monday = 2, tuesday = 8, wednesday = -2,
+        thursday = 1, friday = 3, saturday = 12, sunday = 9
+    };
+    ```
+* S'utilise comme un type standard et un entier
+
+    ```C
+    enum days d = monday;
+    (d + 2) == tuesday + tuesday; // true
+    ```
+
+# Types énumérés (2/2)
+
+* Très utile dans les `switch ... case`{.C}
+
+    ```C
+    enum days d = monday;
+    switch (d) {
+        case monday:
+            // trucs
+            break;
+        case tuesday:
+            printf("0 ou 1\n");
+            break;
+    }
+    ```
+* Le compilateur vous prévient qu'il en manque!
+
+# Utilisation des types énumérés
+
+## Réusiner votre couverture de la reine avec des `enum`
+
 # Représentation des nombres (1/2)
 
 * Le nombre `247`.
@@ -226,7 +274,7 @@ $$
 = 247.
 $$
 
-# Conversion de décimal à binaire (1/N)
+# Conversion de décimal à binaire (1/2)
 
 ## Convertir 11 en binaire?
 
@@ -247,7 +295,7 @@ $$
     2^0=11.
     $$
 
-# Conversion de décimal à binaire (2/N)
+# Conversion de décimal à binaire (2/2)
 
 ## Convertir un nombre arbitraire en binaire: 247?
 
@@ -265,6 +313,7 @@ $$
         N += 1
     }
     ```
+
 . . .
 
 2. Boucle
@@ -277,14 +326,82 @@ $$
     }
     ```
 
+# Les additions en binaire
+
+Que donne l'addition `1101` avec `0110`?
+
+* L'addition est la même que dans le système décimal
+
+    ```
+       1101         8+4+0+1 = 13
+    +  0110    +    0+4+2+0 =  6
+    -------    -----------------
+      10011      16+0+0+2+1 = 19
+    ```
+* Les entiers sur un ordinateur ont une précision **fixée** (ici 4 bits).
+* Que se passe-t-il donc ici?
+
+. . .
+
+## Dépassement de capacité: le nombre est tronqué
+
+* `10011 (19) -> 0011 (3)`.
+* On fait "le tour"."
+
+# Les multiplications en binaire (1/2)
+
+Que donne la multiplication de `1101` avec `0110`?
+
+* L'addition est la même que dans le système décimal
+
+    ```
+         1101                13
+    *    0110    *            6
+    ---------    --------------
+         0000                78
+        11010
+       110100
+    + 0000000
+    ---------    --------------
+      1001110    64+0+0+8+4+2+0
+    ```
+
+# Les multiplications en binaire (2/2)
+
+## Que fait la multiplication par 2?
+
+. . .
+
+* Décalage de un bit vers la gauche!
+
+    ```
+         0110
+    *    0010
+    ---------
+         0000
+    +   01100
+    ---------
+        01100
+    ```
+
+. . .
+
+## Que fait la multiplication par $2^N$?
+
+. . .
+
+* Décalade de $N$ bits vers la gauche!
+
+# Entiers signés (1/N)
+
 
-# TODO
+<!-- # TODO -->
 
-## Entiers, entiers non-signés
+<!-- ## Entiers, entiers non-signés -->
 
-## Complément à 1, 2
+<!-- ## Complément à 1, 2 -->
 
-## Nombres à virgule flottante, simple/double précision
+<!-- ## Nombres à virgule flottante, simple/double précision -->
 
 # Types composés: `struct`{.C} (1/6)