Représentation binaire des entiers
positifs
= Introduction : analogie avec la base 10
Nous utllsons tous les jours la base 10 pour compter, est la base décimale. Par exemple, le nombre 4097 représente 4 millers, 0
contain, 9 dizaines et 7 unites
4097 = 4 x 1000 + 0 x 100-49 x 10-47 x Leest-i-dice :4097 = 4 x 10° +0 x 107 +9 x 10! +7 x 10°
(On retrouve les chiffres 4,0,9 et 7 dans cette écriture avec des puissances de 10. On peut schématiser cola ainsi
[Puissances de 10] ..]10°]10°]10* 10°] 10°[10" 10°
chithes, x|x|x]sfolol7
En base 10, chaque chiffre peut prendre 10 valeurs: de 0.38
‘Comment ajouter 1 en base 10?
Vous le faites intutivement, mais analysons ce qui se passe avec les chiffres de la représentation décimale. I faudra faire exactement
lameéme chose on base 2.
Cn regarde le chife des unites stint pas au maximum (#£ 9} on ajoute lu ajoute 1 ;slest au maximum, on la met a 2éraat on
regarde sion peut ajouter 1 au chiffre des dizaines, et ainsi de suite,
Voyons quelques exemples pour fixer les ides
+ Onveut ajouter 1227: comme le chitfre des unités vaut 7 (# 9} on lui ajoute directement 1.On obtient cone 28,
+ Onveut ajouter 1.29: comme le chitfre des unités est & sa valeur maximal, on le met # Det on regarde le chitfre des dizaines
il vest pas asa valeur maximale, on peut donc lui ajouter L On obtient done 30.
+ Onveut ajouter 12.99: comme le chiffre des unités vaut 9 on le met 8 et on passe au chiffre des dizaines,celui-civaut aussi 9
donc on le met aussi a O et on passe au chiffre des centaines; celui vaut O donc on peut lui ajouter L.On obtient done 100,
= Codage en base 2
Toute machine informatique, en raison de son architecture (ef. Thame 5, chapitres Tet 2}, ne manipule que des données exprimées
Cen langage binaire, dans lequel tous les "mots" s'écrivent uniquement avec des 0 et des
Définitions
“+ Lunité de base du langage binaire s'appelle le bit (contraction de binary digit soit chiffe binalre en anglais). Un bit ne
peut donc prendre que deux valeurs distinctes, notées O etl
+ Une suite de 8 bits est appelée un octet (exemple: 10010101 est un octet)
Dans la suite, on va voir comment on peut représenter un entier postif uniquement avec des 0 et des 1.
2. Combien de valeurs peut-on coder sur bit?
2. Combien de valeurs peut-on coder sur 2 bits ?
‘3. Combien de valeurs peut-on coder sur 3 bits ?
4. Combien de valeurs peut-on coder sur m bits?1. Quelle est la valeur maximale que lon peut coder sur bits ?
2. Compléter le tableau ci-dessous avec Iécriture binaire de chaque entier
Pour cela, sutfit dajouter 1 exactement de la méme maniére que ce qui a été vu un peu plus haut pour la base 10,
Nombre Nombreen | cation
décimat binaire
° ° [0 se code Oen Binaire
1 1 [ona ajoute Tau premier Bit
2 70 Te premier bit a atteint sa valeur maximale :on le passe 8 0 et on ajoute 1au bit suivant
3 7 fon a ajouté Tau premier Bit
les premier et second bits ont atteint eur valeur maximale on les passe & 0 et on ajoute 1 au
4 00 pr second bits ont atteint passe @ O et on ajout
bitsuivant
5
6
7
8
9
70
Tout cela est un peu pénible, ¢t heureusement que je ne vous al pas demandé de convertir 2022 en binaire..tlya bien
lentendu une méthede pour convert un nomore décimal en binaire,
Algorithme de conversion en binaire par suite de divisions
En divisant le nombre par 2, on obtient comme premier reste, le nombre diunités. Sion recornmence, on obtient les chiffres suivants
de Hécriture en base 2. On s'arréte lorsque le quotient vaut 0.
Exemple : conversion de 42 en base 2
‘Méthode 1: divisions suecessives par 2 (en ligne)
2=2x2+0
M1 =2x1041
10=2x5+1
x240
x14
x0+0
(On oblient ls valeur binalre en concaténant les restes obtenus du dernier au premier :42 = (101010).
Méthode 2: divisions suecessives par 2 (divisions posées)
42
(On obliant la valeur binalre en concaténant les restes obtenus du dernier au premier :42 = (101010)
Méthode 3 : Somme de pulssances de 2Les puissances de 2 sont 1,2, 4, 8,16, 32, 64, 128, 256, $12,102, 2048, ote. On peut trouver Ia plus grande puissance de ? inférioure ou
égale au nombre décimal 8 convertir. La plus grande puissance de ? inférieure ou égale & 42 est 32. Il manque alors 10 pout faire 42,
«donc on recommence avec 10 en cherchant a plus grande puissance de 2 inérieure ou égale 810, etc
42 = 32+ (10)
= 824+8+(2)
324842
42842!
1x BHO M+ 1x 2% +Ox +1 x +0x I
Done 42
101010).
En Python,
(On peut caleuler Hécriture en binaite d'un entier avee la fonction Python bin()
>>> bin(42)
“eo1e1e18"
Convertisse2 (2 la main) en base 2les nombres décimaux suivants 63, 257, 2028.
Vous pourrez verifier vos résultats avec Python.
Conversion binaire — décimale
La conversion binaire vers décimale est plus simple.
De la mame maniére que les chiffes de lécriture décimale représentent des pulssances de10, les chitfres de fécriture binaire
représontont des puissances de 2
Prenons fexemple du nombre binaire 11010111:
Puissances de 2]2]2°|2*[2*]2°]2?|2![2°
cries |a[1fo[r fof fafa
Ainsi, pour conwertir (11010111)3 en décimal, on multiplie le premier chifre eelul de droite) par 2°, le second par 2}, le troisiome par
23. ete. On caleule ensuite la somme de ces valeurs pour obtenir le nombre en décimal
on obtient:
(1101011)» = 12° 41x28 1x2 OKT LIE O KHL ELIT
cesva-dire
(11010111), = 1424440416 40-4 644 128 = 218.
@Q _~or:07 a bien commencer ar le chifre des unites!
En Python
(On peut utiliser la fonction Aint) pour convertir un nombre binaite en décimal
>> int("11010111', 2) # le ‘2° pour indiquer que 1a chaine est en base 2
25
(On peut aussi directement saisir un nombre en binaire en préfixant son écriture par @b
de> obizere112
25Convertissez en décimal les nombres binares suivants: (11011) et (1100011011),
Vous pourree vier vos résultats avee Python
Dans les exercices, on écriva les algorithmes de conversion entre base 10 et base 2, On verra également comment
additionner ou multiplier deux nombres binaires.
= Codage en base 16
Cette base est appelée base hexadéelmale (hexa = 6 + décimale =10). Nous allons passer plus rapidement cette partie car les,
méthodes restent les mémes quiavec la base 2.
+ Enbbase 10: chaque chiffre peut étte codé par 10 valeurs (0,1,2,3, 4,5 6,7, 8,9)
+ Enbase 2: chaque chiffre peut étre codé par2 valeurs (0,1),
+ Enbase 16: sans surprise, chaque chifte peut étre codé par 16 valeurs (0,1,2,,4,5, 6,7, 8,9)... et apres 2). Apres le 9, on va
Utilser les letres de alphabet pour arriver 816 valeurs en te
Ainsi,on baso 16, chaque “chiffre' est codé par :0, 1,2,8,4,8,6,7,8,9, A, B,C, D, B, F avec la correspondance suivante:
[Base 10] Base 16 [Base 2
0 o | o
1 7 1
2 0
3 s [on
4 4 | 100
5 | 0
6 6 | 10
7 7 |
@ | 1000
9 9 | 1001
0 | a | iw
7 a [ton
2 | c | noo
w | 2 | m0
4 |e | mo
w [oe foam
Pourquoi la base 16 ?
Lavantage de la base 16 réside dans sa facilté de conversion de et vers Ia base 2, Un chiffre en base 16 remplace 4 bits (c
base 2) Elle est done un compromis entre le code binaite des machines et une base de numération pratique & utiliser pour les
ingenieurs.
ifresen
hexadecimal a 6t6 utilisé la premiere fois en 1956 par les ingénieurs de ordinateur Bendix C-
15, Pour plus d'informations sure systéme hexadécimal Systame hoxadécimal - Wikinadia,
Conversion en hexadécimal
Lalgorithme est exac'
ment le méme que pour la conversion en binaire. I suffit juste de diviser successivement par 16 et non par 2
Exemple : conversion de 215 en base 16Méthode 1
218-16 x 15+7
1516 X0+15 (+B)
(On obtient fa valeur hexadécimale en concaténant les restes obtenus du dernier au premier :215 =
Méthode 2
215 [16
7/1316
Kaa fo
(On obtient la valeur hexadécimale en concaténant les testes obtenus du dernier au premier :215 = (DT)is
La troisi¢eme méthode est possible mais est beaucoup moins adaptée car il faut connaitre les puissances de 16
En Python,
(On peut caleuter
ture en binaire d'un entier avec la fonction Python hex()
>>> hex(215)
oxa7*
Pourquoi la base 16? (bis)
Grice au tableau ci-dessus,on sit que (D)ye = (1101)2 et que (7)1s = (0111)2 donc on peut convertr tras rapidement (D7)as en
base 2: (11010111)2,
Réciproquement sion connait un nombre binaire (11000011), cn convert les bits par blocs de 4(1100)2 = (Cis et
(0011)2 = (8)as et on a trés rapidement : (11000011): = (C3)is
Conversion hexadécimale — décimale
Le principe est le méme que la conversion binaire vers décimale,
plut6t qu'un long discours, un exemple
Exempt
‘conversion de (48),4 en base 10:
Puissances de 16] 16°| 16" 16°|
chires [4 [ele
Done: (AB) ig = 8 x 10° + Bx 164+ 4 x 16? = 8x 1+ 14 x 16-44 x 256 = 8 + 224 + 1024 = 1256.
En Python
(On peut utiliser la fonction int) pour convertir une valeur hexadécimale en décimal
>»> int("4e8", 16) # on précise bien que 1a base d'origine est 1a base 16
1256
(On peut aussi directement sais un nombre en hexadécimal en préfixant son éer
>>> @xdes
1256
1. Convertssez 457 en base.
2. Convertssez (876);9 en base.
= Ecriture d'un entier positif dans une base b > 2 quelconqueGénéralisation
Dans une base b > 2 quelconque, on procéde exactement de ls méme fagon mais avec des pulssances de b!
Exempl
Seriture de Ventier 38 en base S
BB= 1x57 42x43 x 5
Le nombre 38 s'écrt done (128)s en base 5
Ecriture d'un entier positif dans une base b> 2:
Soit = ay x Bb aga x BL. hag x BP par x BE ay x 8,
Co les as sont des chitfres entre 0 et b—
Dans ce cas, dndy-t---dgayag est lcriture en base bde x
On note cela
B= (Qn yt. 420i6)o-