Skip to content
Snippets Groups Projects
Verified Commit c855399f authored by orestis.malaspin's avatar orestis.malaspin
Browse files

added addition and multiplcuiation

parent 494c6257
Branches
Tags
No related merge requests found
...@@ -73,7 +73,8 @@ int main() { ...@@ -73,7 +73,8 @@ int main() {
## Exercice: ## 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) # Tableau à deux dimensions (1/4)
...@@ -187,6 +188,53 @@ for (int i = 0; i < NX; ++i) { ...@@ -187,6 +188,53 @@ for (int i = 0; i < NX; ++i) {
## Poster le résultat sur `Element` ## 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) # Représentation des nombres (1/2)
* Le nombre `247`. * Le nombre `247`.
...@@ -226,7 +274,7 @@ $$ ...@@ -226,7 +274,7 @@ $$
= 247. = 247.
$$ $$
# Conversion de décimal à binaire (1/N) # Conversion de décimal à binaire (1/2)
## Convertir 11 en binaire? ## Convertir 11 en binaire?
...@@ -247,7 +295,7 @@ $$ ...@@ -247,7 +295,7 @@ $$
2^0=11. 2^0=11.
$$ $$
# Conversion de décimal à binaire (2/N) # Conversion de décimal à binaire (2/2)
## Convertir un nombre arbitraire en binaire: 247? ## Convertir un nombre arbitraire en binaire: 247?
...@@ -265,6 +313,7 @@ $$ ...@@ -265,6 +313,7 @@ $$
N += 1 N += 1
} }
``` ```
. . . . . .
2. Boucle 2. Boucle
...@@ -277,14 +326,82 @@ $$ ...@@ -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) # Types composés: `struct`{.C} (1/6)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment