aboutsummaryrefslogtreecommitdiff
path: root/semestre 3/architecture des ordinateurs/td/25-09-17.md
diff options
context:
space:
mode:
Diffstat (limited to 'semestre 3/architecture des ordinateurs/td/25-09-17.md')
-rw-r--r--semestre 3/architecture des ordinateurs/td/25-09-17.md70
1 files changed, 70 insertions, 0 deletions
diff --git a/semestre 3/architecture des ordinateurs/td/25-09-17.md b/semestre 3/architecture des ordinateurs/td/25-09-17.md
new file mode 100644
index 0000000..cf81253
--- /dev/null
+++ b/semestre 3/architecture des ordinateurs/td/25-09-17.md
@@ -0,0 +1,70 @@
+---
+tags:
+ - sorbonne
+ - informatique
+ - architecture-des-ordinateurs
+ - td
+semestre: 3
+---
+$127_d$ prend 7 bits
+$32_d$ prend 6 bits (car le nombre max dans $n$ bits est $2^n-1$ !)
+
+Un mot hexa de taille $n$ permet de coder $16^n$ valeurs, soit toutes les valeurs entières dans $[0;16^n-1]$
+
+| Mot binaire de 8 bits | Décimal | Mot hexa de 8 bits |
+| --------------------- | ------- | ------------------ |
+| `0b0000 1010` | 10 | `0x0A` |
+| `0b0000 0010` | 2 | `0x02` |
+| `0b0001 0000` | 16 | `0x10` |
+| `0b0011 1001` | 57 | `0x3B` |
+| `0b1000 0001` | 127 | `0x81` |
+| `0b0001 0111` | 23 | `0x17` |
+| `0b0101 1011` | 91 | `0x5B` |
+| `0b0010 1001` | 41 | `0x29` |
+| `0b1010 1010` | 170 | `0xAA` |
+$5B_h+17_h = 72_h$ -> 7 bits
+$71_h+B5_h = 126_h$ -> 9 bits
+
+`0x2B` + `0x95` = `0xC0` -> pas de dépassement en interprétation « entier naturel »
+`0xC8` + `0x6D` = `0x35` -> dépassement en interprétation « entier naturel »
+`0x8B57` + `0xA34F` = `0x2EA6` -> dépassement en interprétation « entier naturel »
+
+`0b1001 0011` - `0b1010 0011` = `0b1111 0000` -> dépassement en interprétation « entier naturel »
+`0b1100 1111` - `0b1011 0011` = `0b0001 1100` -> pas de dépassement en interprétation « entier naturel »
+
+`M1 & M2` = `0b1000`
+`M1 | M2` = `0b1101`
+`~M1` = `0b0110`
+`M1 ^ M2` = `0b0101`
+
+`M3 & 0x0000 FF00`
+`M3 ^ M3 = 0x0000 0000`
+`M3 ^ 0x0000 00FF` -> permet d'inverser les bits 0 à 7 (i.e. les 8 premiers)
+
+`M7` = `0b01010011`
+`M7 << 1` = `0b10100110`
+`M7 << 2`= `0b01001100`
+`M7 >> 4`= `0b00000101`
+
+`<<` réduit le nombre entier naturel et `>>` l'augmente !
+
+| Base 16 | Signe | Base 2 | Opposé base 2 | Opposé base 16 |
+| -------- | ----- | ----------------------- | ----------------------- | -------------- |
+| `0x0B24` | + | `0b0000 1011 0010 0100` | `Ob0111 0100 1101 1100` | `0x74DC` |
+| `0xABCD` | - | `0b1010 1011 1100 1101` | `0b0101 0100 0011 0011` | `0x5433` |
+| `0xFFFF` | - | `0b1111 1111 1111 1111` | `Ob0000 0000 0000 0001` | `0x0001` |
+`0b01101001` + `0b10000000` = `0b11101001`
+|> est valide pour des naturels (pas de retenu sortante)
+|> est valide pour des relatifs (les deux dernières retenues sont identiques)
+
+`0b0110` + `0b0100` est valide en naturel, mais pas en relatif
+
+`127 - 128 = -1` -> pas de dépassement
+`120 - (- 150) = 270 > 127` -> dépassement de capacité
+`-64 + 127 + 1 = 64` -> pas de dépassement de capacité
+|> on n'aurait pas pu réaliser `-64 + 128` directement car 128 ne rentre pas sur 8 bits
+|> si on avait fait `opposer(64 - 128)`, on aurait pu le faire
+
+`0xFF` sur 32 bits, c'est `0xFFFFFFFF`
+|> sa valeur en décimal (relatif en complément à 2), c'est $-1_d$
+|> si c'est un naturel, c'est plus du tout la même chose !