Section courante

A propos

Section administrative du site

L'une des opérations les plus élémentaires en mathématiques et en programmation consiste à déterminer si un nombre entier est pair ou impair. Cette distinction, connue depuis l'Antiquité, demeure encore aujourd'hui très utilisée dans de nombreux domaines de l'informatique, qu'il s'agisse de calcul scientifique, de cryptographie, de traitement de données, de jeux vidéo ou encore d'algorithmes de tri et de recherche. Plusieurs langages de programmation proposent directement une fonction permettant d'effectuer cette vérification. C'est notamment le cas de Turbo Pascal avec sa célèbre fonction «Odd», qui retourne une valeur indiquant si le nombre fourni est impair. Dans d'autres langages, comme le C, cette fonctionnalité n'est pas toujours disponible sous forme de fonction standard, mais elle peut être reproduite très facilement à l'aide d'une technique particulièrement rapide.

D'un point de vue mathématique, un nombre pair est un entier divisible par deux sans reste, tandis qu'un nombre impair laisse toujours un reste de un lors de cette division. Bien que cette vérification puisse être réalisée à l'aide de l'opérateur modulo (%), les programmeurs recherchent souvent des méthodes encore plus efficaces lorsqu'ils doivent traiter un très grand nombre de valeurs. Une des approches les plus performantes consiste à exploiter directement la représentation binaire des nombres. En effet, dans un ordinateur, chaque entier est entreposé sous forme de bits, et le bit de poids faible indique immédiatement si le nombre est pair ou impair. Si ce bit vaut 1, le nombre est impair ; s'il vaut 0, le nombre est pair.

Le programme en langage C présenté ci-dessous met en oeuvre cette technique en utilisant l'opérateur logique ET (« & »). L'expression (value & 1) permet d'isoler le dernier bit du nombre et d'obtenir instantanément l'information recherchée. Cette méthode est extrêmement rapide puisqu'elle ne nécessite aucune division ni aucun calcul complexe. Elle est d'ailleurs largement utilisée dans les systèmes d'exploitation, les compilateurs, les bibliothèques de traitement numérique et de nombreux logiciels où les performances sont importantes.

Afin d'illustrer le fonctionnement de cette approche, le programme parcourt une série de nombres allant de -4 à 10 et affiche pour chacun d'eux s'il est pair ou impair. Les résultats démontrent que la méthode fonctionne aussi bien avec les nombres négatifs qu'avec les nombres positifs ou nuls. Cet exemple constitue une excellente introduction aux opérations binaires en langage C et montre comment une simple manipulation de bits peut remplacer avantageusement des calculs arithmétiques plus coûteux. Il permet également de mieux comprendre le lien étroit entre les concepts mathématiques fondamentaux et leur représentation interne dans les ordinateurs modernes.

Voici un programme très performant permettant de déterminer celui-ci en C :

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int Odd(int value) {
  5.     return (value & 1)==1;
  6. }
  7.  
  8. int main()
  9. {
  10.     int I;
  11.     for(I=-4;I<=10;I++) {
  12.         printf("Le nombre %i est %s\n",I,(Odd(I)?"Impaire":"Pair"));
  13.     }
  14.      return 0;
  15. }

on obtiendra le résultat suivant :

Le nombre -4 est Pair
Le nombre -3 est Impaire
Le nombre -2 est Pair
Le nombre -1 est Impaire
Le nombre 0 est Pair
Le nombre 1 est Impaire
Le nombre 2 est Pair
Le nombre 3 est Impaire
Le nombre 4 est Pair
Le nombre 5 est Impaire
Le nombre 6 est Pair
Le nombre 7 est Impaire
Le nombre 8 est Pair
Le nombre 9 est Impaire
Le nombre 10 est Pair

Voir également

Science - Mathématique

Dernière mise à jour : Samedi, le 22 août 2015