diff options
| author | Anhgelus Morhtuuzh <william@herges.fr> | 2025-09-19 12:16:41 +0200 |
|---|---|---|
| committer | Anhgelus Morhtuuzh <william@herges.fr> | 2025-09-19 12:16:41 +0200 |
| commit | 5a08a4e1e055a0a702a54cfa867d7fdebf2c1ad7 (patch) | |
| tree | 470e9aeb90b79f61beaab352fa0e394b9e76b11f /semestre 3/architecture des ordinateurs/td | |
| parent | cac7f3e868e98281f9f2b841101b09f02cf664fd (diff) | |
Cours du 15 au 19 septembre
Diffstat (limited to 'semestre 3/architecture des ordinateurs/td')
| -rw-r--r-- | semestre 3/architecture des ordinateurs/td/25-09-17.md | 70 |
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 ! |
