Skip to content

Commit

Permalink
Merge branch 'master' of forge.apps.education.fr:david_landry/NSI_1ere
Browse files Browse the repository at this point in the history
  • Loading branch information
NSI-Clemenceau committed Apr 21, 2024
2 parents 520fea7 + ff5bcdc commit de5617a
Show file tree
Hide file tree
Showing 4 changed files with 36 additions and 36 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@
"La première idée qui pourrait nous venir à l'esprit est, sur un nombre comportant n bits, d'utiliser le premier bit pour représenter le signe et les suivants pour représenter la valeur absolue du nombre à représenter : le bit de signe étant le bit dit \"de poids fort\" (c'est à dire le bit le plus à gauche), ce bit de poids fort serait à 0 dans le cas d'un nombre positif et à 1 dans le cas d'un nombre négatif.\n",
"\n",
"> __Exemple :__ sur 8 bits, on représenterait...\n",
"- l'entier 5 par 00000101\n",
"- l'entier -5 par 10000101\n",
"> - l'entier 5 par 00000101\n",
"> - l'entier -5 par 10000101\n",
"\n",
"Il existe un énorme inconvénient à cette méthode : l'existence de deux zéros :\n",
"\n",
Expand Down Expand Up @@ -43,10 +43,10 @@
"Pour retrouver la valeur décimale d'un nombre négatif représenté en binaire, il suffit d'appliquer à nouveau la méthode du complément à deux pour trouver sa valeur absolue. \n",
"\n",
"> __Exemple :__ quelle est la valeur décimale de 11001011 ?\n",
"- on inverse tous les bits : 00110100\n",
"- on ajoute 1 : 00110101\n",
"- on convertit ce nombre du binaire au décimal : 53\n",
"- la valeur décimale de 11001011 est donc -53 !\n",
"> - on inverse tous les bits : 00110100\n",
"> - on ajoute 1 : 00110101\n",
"> - on convertit ce nombre du binaire au décimal : 53\n",
"> - la valeur décimale de 11001011 est donc -53 !\n",
"\n",
"### Le complément à deux, appliqué sur un octet\n",
"\n",
Expand All @@ -67,9 +67,9 @@
"C'est cette façon contre-intuitive de stocker les nombres relatifs qui permet une meilleure efficacité de calculs.\n",
"\n",
"> __Remarques :__ \n",
"- On remarque qu'il est facile de déterminer si une représentation correspond à un entier positif ou un entier négatif : __si le bit de poids fort est à 1, nous avons affaire à un entier négatif__, si le bit de poids fort est à 0, nous avons affaire à un entier positif.\n",
"- On remarque aussi qu'avec 8 bits, nous pouvons coder les entiers relatifs de -128 à 127.\n",
"- Plus généralement, avec n bits nous pouvons coder uniquement des entiers compris entre $-2^{n-1}$ et $(2^{n-1} - 1)$.\n",
"> - On remarque qu'il est facile de déterminer si une représentation correspond à un entier positif ou un entier négatif : __si le bit de poids fort est à 1, nous avons affaire à un entier négatif__, si le bit de poids fort est à 0, nous avons affaire à un entier positif.\n",
"> - On remarque aussi qu'avec 8 bits, nous pouvons coder les entiers relatifs de -128 à 127.\n",
"> - Plus généralement, avec n bits nous pouvons coder uniquement des entiers compris entre $-2^{n-1}$ et $(2^{n-1} - 1)$.\n",
"\n",
"### Propriété intéressante du complément à deux\n",
"\n",
Expand All @@ -83,7 +83,7 @@
"\n",
"Avec cette méthode d'encodage, __les additions en binaire se font donc aussi naturellement qu'avec des nombres décimaux__.\n",
"\n",
"> __Remarque :__ même si les additions s'en trouvent facilitées, il faut bien faire attention à ce que la somme reste dans les bornes de notre encodage (ex : [-128, 127] pour un octet). Sinon, on parle de débordement, ce qui est une source classique d'erreur de calcul."
"> __Remarque :__ même si les additions s'en trouvent facilitées, il faut bien faire attention à ce que la somme reste dans les bornes de notre encodage (ex : [-128, 127] pour un octet). Sinon, on parle de __débordement__, ce qui est une source classique d'erreur de calcul."
]
},
{
Expand All @@ -94,33 +94,34 @@
"\n",
"### Manipulation de nombres relatifs en binaire\n",
"\n",
"1. Déterminer la représentation en binaire sur 8 bits de −19.\n",
"__1. Déterminer la représentation en binaire sur 8 bits de −19.__\n",
" - En binaire, on représente 19 sur 8 bits par 00010011\n",
" - Après inversion des bits, on obtient 11101100\n",
" - Après ajout de 1, on btient la représentation binaire de -19 : 11101101\n",
" \n",
"2. Effectuez ensuite l'addition avec la représentation de 19 en binaire.\n",
"__2. Effectuez ensuite l'addition avec la représentation de 19 en binaire.__\n",
" - 00010011 + 11101101 = 100000000, soit 00000000 sur 8 bits. 19 - 19 est donc bien égal à 0 !\n",
" \n",
"3. Déterminer la représentation en binaire sur 16 bits de −72.\n",
"__3. Déterminer la représentation en binaire sur 16 bits de −72.__\n",
" - En binaire, on représente 72 sur 16 bits par 0000000001001000\n",
" - Après inversion des bits, on obtient 1111111110110111\n",
" - Après ajout de 1, on btient la représentation binaire de -72 : 1111111110111000\n",
" \n",
"4. Effectuez ensuite l'addition avec la représentation de 72 en binaire.\n",
"__4. Effectuez ensuite l'addition avec la représentation de 72 en binaire.__\n",
" - 0000000001001000 + 1111111110111000 = 10000000000000000, soit 0000000000000000 sur 16 bits. 72 - 72 est donc bien égal à 0 !\n",
"\n",
"5. Déterminer la valeur décimale du nombre binaire 10011101 représenté par la méthode du complément à deux.\n",
"__5. Déterminer la valeur décimale du nombre binaire 10011101 représenté par la méthode du complément à deux.__\n",
" - on inverse tous les bits : 01100010\n",
" - on ajoute 1 : 01100011\n",
" - on convertit ce nombre du binaire au décimal : 99\n",
" - la valeur décimale de 11001011 est donc -99 !\n",
"\n",
"### Capacité de stockage en complément à deux\n",
"\n",
"1. Sur 8 bits, donner un encadrement des entiers relatifs codables.\n",
" - C'est simplement un rappel car on l'a vu ci-dessus : avec n bits nous pouvons coder uniquement des entiers compris entre $-2^{n-1}$ et $(2^{n-1} - 1)$. Avec 8 bits, on peut donc coder les nombres relatifs de -128 à 127.\n",
"2. Même question sur 9 bits.\n",
"__1. Sur 8 bits, donner un encadrement des entiers relatifs codables.__\n",
" - C'est simplement un rappel car on l'a vu ci-dessus : avec n bits nous pouvons coder uniquement des entiers compris entre $-2^{n-1}$ et $(2^{n-1} - 1)$. Avec 8 bits, on peut donc coder les nombres relatifs de -128 à 127. \n",
"\n",
"__2. Même question sur 9 bits.__\n",
" - Avec 9 bits, on peut donc coder les nombres relatifs de -256 à 255."
]
},
Expand Down Expand Up @@ -148,7 +149,7 @@
"metadata": {},
"source": [
"---\n",
"[![Licence CC BY NC SA](https://licensebuttons.net/l/by-nc-sa/3.0/88x31.png \"licence Creative Commons CC BY-NC-SA\")](http://creativecommons.org/licenses/by-nc-sa/3.0/fr/)\n",
"[![Licence CC BY NC SA](https://licensebuttons.net/l/by-nc-sa/3.0/88x31.png \"licence Creative Commons CC BY-NC-SA\")](https://creativecommons.org/licenses/by-nc-sa/4.0/deed.fr)\n",
"\n",
"<p style=\"text-align: center;\">David Landry, Lycée Clemenceau - Nantes</p>\n",
"\n",
Expand All @@ -161,7 +162,7 @@
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
Expand All @@ -175,7 +176,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.3"
"version": "3.10.9"
}
},
"nbformat": 4,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@
"metadata": {},
"source": [
"---\n",
"[![Licence CC BY NC SA](https://licensebuttons.net/l/by-nc-sa/3.0/88x31.png \"licence Creative Commons CC BY-NC-SA\")](http://creativecommons.org/licenses/by-nc-sa/3.0/fr/)\n",
"[![Licence CC BY NC SA](https://licensebuttons.net/l/by-nc-sa/3.0/88x31.png \"licence Creative Commons CC BY-NC-SA\")](https://creativecommons.org/licenses/by-nc-sa/4.0/deed.fr)\n",
"\n",
"<p style=\"text-align: center;\">David Landry, Lycée Clemenceau - Nantes</p>\n",
"\n",
Expand All @@ -149,7 +149,7 @@
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
Expand All @@ -163,7 +163,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.3"
"version": "3.10.9"
}
},
"nbformat": 4,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@
" while len(nb_binaire) < 8:\n",
" nb_binaire.append(0)\n",
" nb_binaire.reverse()\n",
" \n",
" return nb_binaire\n",
" \n",
"doctest.testmod()"
Expand Down Expand Up @@ -113,13 +114,9 @@
" >>> inverse_0_et_1([1, 0, 1, 1, 1, 0, 0, 0])\n",
" [0, 1, 0, 0, 0, 1, 1, 1]\n",
" '''\n",
" test_OK = True\n",
" for chiffre in liste:\n",
" if chiffre not in [0, 1]:\n",
" test_OK = False\n",
" assert test_OK, \"La liste ne doit contenir que des 0 ou des 1\"\n",
" \n",
"\n",
" for i, chiffre in enumerate(liste):\n",
" assert chiffre in (0, 1), \"La liste ne doit contenir que des 0 ou des 1\"\n",
" if chiffre == 0:\n",
" liste[i] = 1\n",
" else:\n",
Expand Down Expand Up @@ -158,13 +155,15 @@
" '''\n",
" retenue = 1 \n",
" i = len(liste) - 1\n",
" \n",
" while i >= 0 and retenue == 1:\n",
" if liste[i] == 0:\n",
" liste[i] = 1\n",
" retenue = 0\n",
" else:\n",
" liste[i] = 0\n",
" i -= 1\n",
" \n",
" return liste\n",
"\n",
"doctest.testmod()"
Expand Down Expand Up @@ -309,7 +308,7 @@
"metadata": {},
"source": [
"---\n",
"[![Licence CC BY NC SA](https://licensebuttons.net/l/by-nc-sa/3.0/88x31.png \"licence Creative Commons CC BY-NC-SA\")](http://creativecommons.org/licenses/by-nc-sa/3.0/fr/)\n",
"[![Licence CC BY NC SA](https://licensebuttons.net/l/by-nc-sa/3.0/88x31.png \"licence Creative Commons CC BY-NC-SA\")](https://creativecommons.org/licenses/by-nc-sa/4.0/deed.fr)\n",
"\n",
"<p style=\"text-align: center;\">David Landry, Lycée Clemenceau - Nantes</p>\n",
"\n",
Expand All @@ -322,7 +321,7 @@
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
Expand All @@ -336,7 +335,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.3"
"version": "3.10.9"
}
},
"nbformat": 4,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -243,7 +243,7 @@
"metadata": {},
"source": [
"---\n",
"[![Licence CC BY NC SA](https://licensebuttons.net/l/by-nc-sa/3.0/88x31.png \"licence Creative Commons CC BY-NC-SA\")](http://creativecommons.org/licenses/by-nc-sa/3.0/fr/)\n",
"[![Licence CC BY NC SA](https://licensebuttons.net/l/by-nc-sa/3.0/88x31.png \"licence Creative Commons CC BY-NC-SA\")](https://creativecommons.org/licenses/by-nc-sa/4.0/deed.fr)\n",
"\n",
"<p style=\"text-align: center;\">David Landry, Lycée Clemenceau - Nantes</p>\n",
"\n",
Expand All @@ -256,7 +256,7 @@
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
Expand All @@ -270,7 +270,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.3"
"version": "3.10.9"
}
},
"nbformat": 4,
Expand Down

0 comments on commit de5617a

Please sign in to comment.