aboutsummaryrefslogtreecommitdiff
path: root/semestre 2/informatique/2- Code binaire, mémoire, pointeurs.md
diff options
context:
space:
mode:
Diffstat (limited to 'semestre 2/informatique/2- Code binaire, mémoire, pointeurs.md')
-rw-r--r--semestre 2/informatique/2- Code binaire, mémoire, pointeurs.md68
1 files changed, 68 insertions, 0 deletions
diff --git a/semestre 2/informatique/2- Code binaire, mémoire, pointeurs.md b/semestre 2/informatique/2- Code binaire, mémoire, pointeurs.md
new file mode 100644
index 0000000..fa8979c
--- /dev/null
+++ b/semestre 2/informatique/2- Code binaire, mémoire, pointeurs.md
@@ -0,0 +1,68 @@
+---
+tags:
+ - sorbonne
+ - informatique
+semestre: 2
+---
+## Architecture de von Neumann
+Ordinateur est composé d'un processeur, d'une mémoire et de périphériques
+![[computer_architecture_simplified.png]]
+![[computer_architecture_detailled.png]]
+
+Registres = mémoire interne au CPU
+
+Unité de base = octet (8 bits)
+
+**Organisation de la mémoire :**
+![[ram_organisation_schema.png]]
+
+Les tensions électriques pour la valeur binaire 1 = 5 V ou 3.3 V ou 1.65 V
+|> compliqué de descendre plus bas que 1 V à cause de la tension de seuil du silicium
+Les tensions électriques pour la valeur binaire 0 = 0 V
+
+On peut ensuite calculer des choses :
+|> $1010 \land 0011 = 0010$ (bool)
+|> $1010 + 0010 = 1100$ (binaire)
+
+Souvent, on représente la mémoire avec un tableau de 4 colonnes avançant de 4 en 4
+
+Pour représenter les floatants, on les décompose en 3 parties :
+- signe
+- mantisse
+- exposant
+
+Après on peut les approximer à l'aide des sommes d'inverses de 2 ($\frac{1}{2}+\frac{1}{4}+\cdots$)
+Exemple sur $-50.5$ :
+- $2^5+2^4+2^1+2^{-1}$
+- $(2^0+2^{-1}+2^{-4}+2^{-6})\times 2^{5}$
+- la somme est la mantisse et la multiplication est l'exposant
+
+Chaque octet a une adresse unique !
+## Portée des variables
+Globale = disponible partout dans le fichier
+Paramètre = disponible dans toute la fonction
+Locale = disponible dans le bloc
+
+Le shadowing existe en C
+## Pointeurs
+On peut mettre une valeur et une adresse en mémoire
+|> valeur est une valeur classique
+|> une adresse est une zone de la mémoire contenant une valeur
+
+Une variable qui contient une adresse est un pointeur
+```c
+int *n;
+```
+
+ici, `n` contient l'adresse vers un entier
+
+On récupère l'adresse avec l'opérateur `&`
+```c
+int x = 0;
+int *p;
+p = &x;
+printf("%t %d", p, *p);
+```
+
+On peut afficher l'adresse avec `printf("%t", n)`
+On peut afficher le contenu du pointeur avec `*n` \ No newline at end of file