Dans un système de nombres binaires, il n'y a que deux chiffres : Tous les autres nombres sont représentés par ces deux chiffres. Par exemple, "un" est 1, "deux" est 10, "trois" est 11, "quatre" est 100, et ainsi de suite. La plupart du temps, les gens utilisent un système de nombres à dix chiffres (les chiffres de 0 à 9.) C'est ce qu'on appelle le système de nombres décimaux.
La division par deux en binaire est très facile. Elle se fait en déposant le dernier chiffre à droite du nombre. C'est ce qu'on appelle une "opération de décalage de bits". Par exemple, si nous effectuons une opération de décalage de bit sur le nombre binaire 100, nous obtiendrons 10. Puisque le binaire 100 est en décimal 4, et le binaire 10 en décimal 2, cela a du sens.
Un autre exemple est l'exécution d'une opération de décalage de bits sur le 1101. Cela nous laisserait avec 110, mais nous avons laissé tomber un 1 à la fin, pas un zéro. Cela a également du sens car 1101 en binaire est 13 en décimal. Si nous divisons 13 par 2, nous obtenons 6 avec un reste de 1 (il nous reste 1.)
Ordinateurs
Les ordinateurs utilisent le système des nombres binaires pour stocker les informations. L'information est décomposée en petits morceaux appelés bits. Chaque bit est soit un 0, soit un 1. De ce fait, la façon la plus rapide et la plus simple pour un ordinateur de procéder à une division est d'effectuer des opérations de décalage de bits -- division par deux. Remplacer la division régulière par des décalages de bits est une façon d'optimiser le programme. (L'optimisation de programme consiste à essayer de rendre un programme plus rapide et plus efficace).
En programmation informatique, le symbole >> est parfois utilisé pour montrer une opération de décalage. En Java, on peut demander à l'ordinateur de faire le problème 19 ÷ 2 {\displaystyle 19\div 2}
en écrivant 19 >> 2. C'est la même chose qu'écrire 19/2. Ces deux versions nous donneront la réponse 9. Il y a un problème lorsqu'on essaie de faire quelque chose comme - 4 ÷ 2 {\displaystyle -4\div 2}
. En Java, si nous écrivons -3/2, l'ordinateur nous dira que la réponse est -1. Mais si nous essayons de faire -3 >> 2, l'ordinateur nous dira que la réponse est -2. Cela se produira chaque fois que nous essaierons de faire une opération de décalage d'un bit avec un nombre négatif. La raison en est compliquée et tient à la façon dont les nombres binaires négatifs sont enregistrés par l'ordinateur.
Même s'il est plus rapide pour les ordinateurs de faire la division en utilisant des opérations de décalage de bits, la plupart des codes informatiques ne le font pas de cette façon. En effet, les programmeurs veulent que leurs programmes soient portables et lisibles. Portable signifie qu'un programme peut être exécuté sur de nombreux types d'ordinateurs et de systèmes d'exploitation différents. Lisible signifie que le code source est facile à lire et à comprendre. La plupart du temps, le compilateur (un programme qui change le code source en 0 et 1 que l'ordinateur peut comprendre) changera automatiquement la division en décalage de bits.