Qu'est-ce que le complément à un ?
Le complément à un d'un nombre binaire s'obtient en inversant (en « retournant ») chaque bit : tout 0 devient un 1 et tout 1 devient un 0. Comme le résultat dépend du nombre de bits utilisés, vous devez choisir une largeur, par exemple 4, 8, 16 ou 32 bits. Cette représentation servait dans les premiers ordinateurs à coder les entiers signés ; elle reste essentielle pour comprendre l'arithmétique binaire et les sommes de contrÎle de détection d'erreurs.
Comment utiliser ce calculateur
Saisissez un nombre décimal positif ou nul, choisissez une largeur de bits, et le calculateur applique un masque sur cette largeur, inverse tous les bits, puis affiche le résultat sous forme binaire et décimale. Si votre nombre dépasse la capacité de la largeur choisie, seuls les bits de poids faible compris dans cette largeur sont conservés avant l'inversion.
La formule expliquée
On calcule $$\text{compl} = \left(\sim n\right) \,\&\, \left(2^{w} - 1\right)$$ Le terme \(2^{w} - 1\) est un masque composé de w bits à 1 (sur 8 bits, cela donne \(11111111 = 255\)). L'opérateur NON binaire (~) inverse chaque bit de n, et le masque élimine tous les bits situés au-delà de la largeur choisie afin que le résultat reste dans la plage autorisée.
Exemple concret
Prenons le nombre 5 sur 8 bits. En binaire, \(5 = 00000101\). En inversant chaque bit, on obtient \(11111010\), soit 250 en décimal. Le complément à un de 5 sur 8 bits est donc 250. Sur 4 bits, \(5 = 0101\) ; une fois inversé, on obtient \(1010 = 10\).
FAQ
Quelle différence entre le complément à un et le complément à deux ? Le complément à deux ajoute 1 au complément à un, ce qui évite d'avoir deux représentations distinctes du zéro.
Quel est le complĂ©ment Ă un de 0 ? Sur 8 bits, il vaut \(11111111 = 255\) â tous les bits passent Ă 1.
Pourquoi le rĂ©sultat change-t-il selon la largeur de bits ? L'inversion des bits dĂ©pend du nombre de bits disponibles ; plus la largeur est grande, plus on ajoute de 1 en tĂȘte, ce qui donne une valeur dĂ©cimale plus Ă©levĂ©e.