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
No related branches found
No related tags found
No related merge requests found
Pipeline #14698 passed
......@@ -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)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment