Table des matières:
Vidéo: Comprendre le système binaire 2024
Les variables C ++ sont stockées en interne en tant que nombres binaires. Les nombres binaires sont stockés sous la forme d'une séquence de valeurs 1 et 0 appelées bits. La plupart du temps, vous n'avez pas vraiment besoin de traiter les nombres au niveau du bit; Cependant, il y a des occasions où cela est commode. C ++ fournit un ensemble d'opérateurs à cette fin.
Les opérateurs logiques dits bitwise fonctionnent sur leurs arguments au niveau du bit. Pour comprendre comment ils fonctionnent, examinez comment les ordinateurs stockent les variables.
Le système de nombre décimal
Les nombres que vous connaissez sont appelés nombres décimaux parce qu'ils sont basés sur le nombre 10. En général, le programmeur exprime C ++ variables en tant que nombres décimaux. Ainsi, vous diriez que la valeur de var est 123, par exemple.
Un nombre tel que 123 fait référence à 1 * 100 + 2 * 10 + 3 * 1 . Chacun de ces nombres de base - 100, 10 et 1 - est une puissance de 10.
123 = 1 * 100 + 2 * 10 + 3 * 1
Exprimé de manière légèrement différente mais équivalente:
123 = 1 * 10 2 + 2 * 10 1 + 3 * 10 0
Rappelez-vous que tout nombre à la puissance zéro est 1.
Autres systèmes numériques
L'utilisation d'un nombre de base de 10 pour le système de comptage découle, selon toute probabilité, du fait que les humains ont 10 doigts, les outils de comptage originaux. L'alternative aurait été la base 20.
Si les chiens avaient inventé notre système de numérotation, il se pourrait bien qu'il ait été basé sur le chiffre 8 (un chiffre de chaque patte est hors de vue sur la partie arrière de la jambe). Un tel système octal aurait aussi bien fonctionné:
123 10 = 1 * 8 2 + 7 * 8 1 + 3 * 8 0 = 173 8
Les petits 10 et 8 se réfèrent ici au système de numérotation, 10 pour la décimale (base 10) et 8 pour l'octal (base 8). Un système de comptage peut utiliser n'importe quelle base positive.
Le système de numération binaire
Les ordinateurs ont essentiellement deux doigts. (Peut-être que c'est pourquoi les ordinateurs sont si stupides: sans un pouce opposable, ils ne peuvent rien saisir.) Et les ordinateurs préfèrent compter en utilisant la base 2. Le nombre 123 10 serait exprimé comme:
123 10 = 0 * 128 + 1 * 64 + 1 * 32 + 1 * 16 + 1 * 8 + 0 * 4 + 1 * 2 + 1 * 1
= 01111011 < 2 Il est toujours conventionnel d'exprimer des nombres binaires en utilisant 4, 8, 32 ou 64 chiffres binaires même si les premiers chiffres sont nuls. C'est aussi à cause de la façon dont les ordinateurs sont construits en interne.
Comme le terme
chiffre fait référence à un multiple de dix, un chiffre binaire s'appelle un bit . Le terme vient du binaire (b-) digit (-it).Huit bits constituent un octet. Un mot est généralement de deux ou quatre octets. Avec une base aussi petite, il est nécessaire d'utiliser un grand nombre de bits pour exprimer des nombres. Il est incommode d'utiliser une expression telle que 01111011
2 pour exprimer une valeur aussi banale que 123 10 . Les programmeurs préfèrent exprimer des nombres par unités d'octets, ou huit bits. Un seul chiffre de quatre bits est essentiellement la base 16, car quatre bits peuvent exprimer n'importe quelle valeur de 0 à 15. La base 16 est connue sous le nom de système de comptage
hexadécimal . Hexadécimal est souvent contracté simplement à hex. hexadécimal utilise les mêmes chiffres pour les chiffres de 0 à 9. Pour les chiffres entre 9 et 16, hexadécimal utilise les six premières lettres de l'alphabet: A pour 10, B pour 11, et ainsi de suite. Ainsi, 123
10 devient 7B 16 . 123 = 7 * 16
1 + B (ie, 11) * 16 0 = 7B 16 Parce que les programmeurs préfèrent exprimer les nombres en 4, 8, 32 ou 64 bits, ils préfèrent également exprimer des nombres hexadécimaux en 1, 2, 4 ou 8 chiffres hexadécimaux même lorsque les chiffres initiaux sont 0.
Enfin, il est incommode d'exprimer un nombre hexadécimal tel que 7B < 16
en utilisant un indice, car les terminaux ne supportent pas les indices. Même sur un traitement de texte, il est incommode de changer les polices de et vers le mode indice juste pour entrer deux chiffres. Par conséquent, les programmeurs utilisent la convention de commencer un nombre hexadécimal avec un 0x (la raison d'une telle conviction étrange remonte aux premiers jours de C). Ainsi, 7B devient 0x7B. En utilisant cette convention, 0x7B est égal à 123 (alors que 0x123 est égal à 291). Tous les opérateurs mathématiques peuvent être effectués sur des nombres hexadécimaux de la même manière qu'ils sont appliqués aux nombres décimaux. La raison pour laquelle nous ne pouvons pas effectuer une multiplication telle que 0xC * 0xE dans nos têtes a plus à voir avec les tables de multiplication que nous avons apprises à l'école qu'avec toute limitation du système de nombres.