Réponses
- a) 2⋅83+4⋅82+7⋅8+1+3⋅8−1+5⋅8−2=1337,453125
- b) 477, 644, 49,5 et 0,65625
- c) 3108, 17508, 135,68 ; 0,1=0,063148, périodique
- d) 6258, 26278 et 22,158
- e) Complément à 8 de 03258 : 74538 ; 24618−03258=21348 ; plage −2048 à 2047, négatif dès que le chiffre de tête atteint 4
- f) 32538 et 4,238
- g) 4558, 46048 et 16,58
- h) 5318+3338=10648=564 ; 6,48×3,28=25,18=21,125
- i) 7558=111 101 1012 : trois acteurs, trois bits chacun, lecture, écriture, exécution
a) La virgule sépare les rangs positifs des rangs négatifs. À gauche, en partant de la virgule vers la gauche, les poids sont 80,81,82,83 ; à droite, 8−1 puis 8−2. D'où 2471,358=2⋅83+4⋅82+7⋅81+1⋅80+3⋅8−1+5⋅8−2. Valeur : 2(512)+4(64)+7(8)+1+83+645=1024+256+56+1+0,375+0,078125=1337,453125. La notation développée n'est pas un exercice de style : c'est la définition même de la base, et toute conversion vers le décimal n'est que ce calcul écrit plus vite.
b) 7358=7(64)+3(8)+5=448+24+5=477. 12048=1(512)+2(64)+0(8)+4=512+128+4=644 : le zéro se pèse aussi, il tient une position même s'il n'apporte rien. 61,48=6(8)+1+84=49,5. 0,528=85+642=0,625+0,03125=0,65625. Piège classique : lire 0,528 comme « cinquante-deux centièmes ». En base 8, le deuxième chiffre après la virgule pèse un soixante-quatrième, pas un centième.
c) Partie entière par divisions successives par 8, restes lus de bas en haut. 200=8(25)+0 ; 25=8(3)+1 ; 3=8(0)+3, d'où 200=3108 ; contrôle 3(64)+1(8)=200. 1000=8(125)+0 ; 125=8(15)+5 ; 15=8(1)+7 ; 1=8(0)+1, d'où 1000=17508 ; contrôle 512+7(64)+5(8)=512+448+40=1000. Pour 93,75, on sépare : 93=8(11)+5 ; 11=8(1)+3 ; 1=8(0)+1, donc 93=1358 ; puis 0,75×8=6,0, on garde 6 et il ne reste rien, donc 93,75=135,68. Contrôle : 64+24+5+0,75=93,75. Pour 0,1 : 0,1×8=0,8, chiffre 0 ; 0,8×8=6,4, chiffre 6 ; 0,4×8=3,2, chiffre 3 ; 0,2×8=1,6, chiffre 1 ; 0,6×8=4,8, chiffre 4 ; 0,8×8=6,4 et l'on retombe sur un état déjà vu. Le développement est périodique : 0,1=0,063148. Rien d'étonnant : 0,1=101 et 10 contient le facteur 5, qui ne divise aucune puissance de 8. Un décimal fini a une écriture finie en base 8 exactement quand son dénominateur réduit est une puissance de 2, la même condition qu'en binaire, parce que 8=23.
d) On additionne colonne par colonne, et dès qu'une colonne atteint 8 on écrit le reste et on retient 1. Première addition : unités 7+6=13=8+5, on pose 5 et on retient 1 ; huitaines 5+4+1=10=8+2, on pose 2 et on retient 1 ; 3+2+1=6. Résultat 6258. Contrôle décimal : 3578=239, 2468=166, somme 405, et 6258=6(64)+2(8)+5=405. Deuxième addition, à trois termes, alignés à droite : unités 5+3+7=15=8+7, on pose 7 et on retient 1 ; 4+3+2+1=10, on pose 2, retenue 1 ; 7+6+0+1=14, on pose 6, retenue 1 ; 1+0+0+1=2. Résultat 26278. Contrôle : 997+411+23=1431 et 26278=2(512)+6(64)+2(8)+7=1431. Troisième addition, à virgule, en alignant les virgules : 6+7=13, on pose 5, retenue 1 ; 5+3+1=9, on pose 1, retenue 1 ; 2+7+1=10, on pose 2, retenue 1 ; 1+0+1=2. Résultat 22,158. Contrôle : 10,71875+7,484375=18,203125 et 22,158=18+81+645=18,203125. L'erreur la plus fréquente est de retenir à 10 par réflexe : 7+6 donne alors « 13 » posé tel quel, et le résultat est faux de 8 sur cette colonne.
e) Le complément à 7 d'un nombre à 4 chiffres octaux s'obtient en remplaçant chaque chiffre d par 7−d, sans aucune retenue ; c'est l'analogue de l'inversion des bits. Le complément à 8 est le complément à 7 plus 1, et il vaut 84−x=4096−x : c'est l'analogue du complément à deux. Pour 03258 : complément à 7, chiffre par chiffre, 7−0,7−3,7−2,7−5, soit 74528 ; plus 1, 74538. Contrôle : 03258=3(64)+2(8)+5=213, 4096−213=3883, et 74538=7(512)+4(64)+5(8)+3=3584+256+40+3=3883. Soustraction par addition : 24618+74538. Unités 1+3=4 ; 6+5=11=8+3, on pose 3, retenue 1 ; 4+4+1=9, on pose 1, retenue 1 ; 2+7+1=10, on pose 2, retenue 1. On obtient 121348 sur cinq chiffres ; la retenue qui sort à gauche est jetée, puisque l'on travaille sur 4 chiffres, et il reste 21348. Contrôle : 24618=1329, 1329−213=1116, et 21348=1024+64+24+4=1116. Pourquoi ça marche : ajouter 4096−x puis jeter 4096 revient exactement à retrancher x. Plage signée sur 4 chiffres octaux, c'est-à-dire 12 bits : de −211=−2048 à 211−1=2047, soit de 40008 (lu −2048) à 37778. Un nombre est négatif quand son chiffre de tête vaut 4 ou plus : la moitié haute des motifs représente les négatifs, exactement comme le bit de poids fort en binaire, puisque le premier chiffre octal contient ce bit. Ainsi 74538, lu comme un entier signé, vaut 3883−4096=−213.
f) Première soustraction, 70428−35678. Unités : 2<7, on emprunte une huitaine, 2+8−7=3, et le chiffre des huitaines passe de 4 à 3. Huitaines : 3<6, on emprunte, 3+8−6=5, et le chiffre des 64 doit baisser de 1 ; il vaut 0, donc on emprunte d'abord aux 512, qui passent de 7 à 6, et les 64 valent 8−1=7. Colonne des 64 : 7−5=2. Colonne des 512 : 6−3=3. Résultat 32538. Contrôle : 70428=3618, 35678=1911, différence 1707, et 32538=3(512)+2(64)+5(8)+3=1707. Deuxième soustraction, 10,208−3,758, en complétant 10,2 par un zéro pour aligner : soixante-quatrièmes 0<5, on emprunte, 0+8−5=3, et les huitièmes passent de 2 à 1 ; huitièmes 1<7, on emprunte, 1+8−7=2, et les unités, qui valent 0, empruntent aux huitaines, 1→0, pour valoir 8−1=7 ; unités 7−3=4 ; huitaines 0−0=0. Résultat 4,238. Contrôle : 8,25−3,953125=4,296875 et 4,238=4+82+643=4,296875. Le piège de l'emprunt en cascade, à travers un zéro, est le même qu'en décimal ; la seule nouveauté est qu'un emprunt vaut 8.
g) Multiplication posée, avec la table de 8 en tête : chaque produit partiel se réduit modulo 8 et la retenue peut dépasser 1. 538×78 : 3×7=21=2(8)+5, on pose 5 et on retient 2 ; 5×7+2=37=4(8)+5, on pose 5 puis 4. Résultat 4558 ; contrôle 43×7=301=4(64)+5(8)+5. 1248×358 : par 5, 4×5=20=2(8)+4, on pose 4, retenue 2 ; 2×5+2=12=8+4, on pose 4, retenue 1 ; 1×5+1=6, ligne 6448. Par 3, décalée d'un rang : 4×3=12, on pose 4, retenue 1 ; 2×3+1=7 ; 1×3=3, ligne 37408. Somme 6448+37408 : 4+0=4 ; 4+4=8, on pose 0, retenue 1 ; 6+7+1=14, on pose 6, retenue 1 ; 3+1=4. Résultat 46048 ; contrôle 84×29=2436=4(512)+6(64)+4. 6,48×2,28 : on multiplie sans les virgules, 648×228, et l'on replace ensuite autant de chiffres après la virgule qu'il y en avait au total dans les facteurs, ici 1+1=2. 648×2=1508 (car 4×2=8, on pose 0, retenue 1 ; 6×2+1=13, on pose 5, retenue 1) ; la ligne par 2 décalée donne 15008 ; somme 16508 ; avec deux chiffres fractionnaires, 16,508=16,58. Contrôle : 6,5×2,25=14,625 et 16,58=14+85=14,625. La règle de placement de la virgule est la même qu'en décimal, parce qu'elle ne dépend que du nombre de rangs, pas de la base.
h) 345=8(43)+1, 43=8(5)+3, 5=8(0)+5, donc 345=5318 ; 219=8(27)+3, 27=8(3)+3, donc 219=3338. Addition : 1+3=4 ; 3+3=6 ; 5+3=8, on pose 0, retenue 1, et l'on écrit 1 en tête. Résultat 10648, et retour : 512+6(8)+4=564=345+219. Le contrôle ferme la boucle. Puis 6,5=6,48 puisque 0,5=84, et 3,25=3,28 puisque 0,25=82. On calcule 648×328 : par 2, 1508 ; par 3 décalée, 6×3=18=2(8)+2 précédé de 4×3=12=8+4, ce qui donne 2348 puis 23408 ; somme 1508+23408=25108 ; deux chiffres fractionnaires : 25,108=25,18. Retour : 2(8)+5+81=21,125, et 6,5×3,25=21,125. Les deux nombres ont des écritures octales finies parce que leurs parties fractionnaires, 21 et 41, ont un dénominateur puissance de 2.
i) Chaque chiffre octal vaut exactement 3 bits : 7=1112, 5=1012, donc 7558=111 101 1012. Les trois chiffres codent les droits de trois acteurs, le propriétaire, le groupe et les autres, et les trois bits de chaque chiffre sont, dans l'ordre, lecture, écriture, exécution. 7=111 : le propriétaire peut tout ; 5=101 : le groupe et les autres peuvent lire et exécuter, pas écrire. La base 8 est naturelle ici parce que les droits vont par paquets de 3 bits et qu'un chiffre octal est précisément un paquet de 3 bits : le découpage ne demande aucun calcul, il se lit. Un 644, pour comparaison, donne 110 100 100 : le propriétaire lit et écrit, les autres lisent seulement. Voilà pourquoi la conversion binaire vers octal se fait en paquets de 3 et pourquoi l'octal survit là où l'on manipule des triplets de bits.