30 3. Quelques notions de complexité
Exemple 3.2. Le tableau ci-dessous contient les écritures de l’entier 2016 en base
b<10.
2 3 4 5 6 7 8 9
11111100000 2202200 133200 31031 13200 5610 3740 2680
Remarque 3.3. Ayant commencé à compter en utilisant les dix doigts de nos
mains, c’est l’écriture en base 10 qui s’est imposée au fil des siècles. Cependant,
d’un point de vue pratique, et particulièrement en ce qui concerne les application
en informatique, on utilise le plus souvent l’écriture en base 2.
3.1.2. Entiers et bits. Un bit est une variable qui ne peut prendre que les valeurs
0et 1. En considérant son écriture en base 2, un entier naturel peut être considéré
comme une suite de bits. De manière plus précise, pour n=(ak1...a
0)2, l’entier
naturel kest la taille de n, i.e. le nombre de bits nécéssaires pour le mémoriser. Le
bit ak1est le plus significatif er a0est le moins significatif. On remarquera que k
est le seul entier tel que 2k1n<2k, ce qui implique que la taille de nest la
partie entière du nombre réel log(n)/log(2)+1. Dans le cas d’un entier quelconque
n, on peut considérer un bit supplémentaire encodant son signe. Il est important de
signaler que dans la pratique, on utilise plutôt la technique du complément à deux,
qui permet d’effectuer des soustractions de manière plus naturelle. Voulant éviter
de s’éloigner des objectifs du cours, nous ne détaillerons pas cette méthode. À ce
jour, dans les applications cryptographiques tels que le cryptosystème RSA (que
nous verrons plus loin dans le cours), on utilise des entiers à 1024 bits, ce qui
correspond à 309 chiffres décimales.
3.1.3. Opérations élémentaires sur les bits. Il existe quatre opérations élémen-
taires sur les bits : NOT,OR,AND et XOR. Leur résultat est présenté dans les
tableaux ci-dessous.
aNOT a
0 1
1 0
a b a OR b a AND b a XOR b
0 0 0 0 0
0 1 1 0 1
1 0 1 0 1
1 1 1 1 0
Exercice 3.4. Vérifier les relations
aXOR b=(aAND(NOT b)) OR((NOT a) AND b)=
=(aOR b) AND((NOT a) OR(NOT b)).
On considère également l’opération élémentaire de décalage à droite sur une
suite de kbits, définie par RS(ak1...a
0)=0ak1...a
1. On définit de ma-
nière analogue le décalage à gauche en posant LS(ak1...a
0)=ak2...a
00.
On remarquera que si n=(ak1...a
0)2est un entier de kbits, l’entier RS(n)=
(0ak1...a
1)2est le quotient de la division euclidienne de npar 2et a0est son
reste. De plus, si ak1=0alors on a l’identité LS(n)=(ak2...a
00) = 2n.