Exprimez nombres binaires en C ++

Les variables en langage C de sont stockées en interne comme des nombres dits binaires. Les nombres binaires sont stockées sous forme d'une séquence de valeurs 1 et 0 connus comme morceaux.

Sommaire

La plupart du temps, on n'a pas vraiment besoin de traiter avec les bits particulier que vous utilisez pour représenter des nombres. Parfois, cependant, il est pratique et facile à bricoler avec des chiffres au niveau du bit - si C ++ fournit un ensemble d'opérateurs à cette fin.

La dite bit à bit opérateurs logiques fonctionnent sur leurs arguments au niveau du bit. Pour comprendre comment ils fonctionnent, comment les ordinateurs d'abord examiner les variables de magasins.

Le système de nombre décimal

Les chiffres que vous avez été familier avec à partir du moment que vous pourriez d'abord compter sur vos doigts sont connus comme nombres décimaux parce qu'ils sont basés sur le nombre 10. En général, le programmeur exprime les variables du langage C de les nombres décimaux. Ainsi, vous pouvez spécifier la valeur de var comme (par exemple) 123, mais considérer les implications.

Un nombre tel que 123 se réfère à 1 * 100 * 10 + 2 + 3 * 1. Tous ces chiffres de base - 100, 10 et 1 - sont des puissances de 10.

123 = 1 * 100 * 10 + 2 + 3 * 1

Exprimé d'une manière légèrement différente (mais équivalent), 123 ressemble à ceci:

123 = 1 * 102 + 2 * 101 + 3 * 100

Rappelez-vous que quelconque nombre à la puissance zéro est une.

Autres systèmes de numération

Bon, d'accord, en utilisant 10 comme base (ou base) De notre système de comptage provient probablement de ces 10 doigts humains, les outils de comptage originaux. Une base alternative pour un système de comptage pourrait tout aussi bien pu être 20.

Si notre système de numérotation avait été inventé par les chiens, il pourrait bien être basée sur 8 (un chiffre de chaque patte est hors de la vue sur la partie arrière de la jambe). Mathématiquement, un tel octal système aurait fonctionné tout aussi bien:




12310 * 8 = 12 + 7 * 81 + 3 * 80 = 1738

Le petit 10 et 8 ici se référer au système de numérotation, 10 pour décimal (base 10) et 8 pour octal (base 8). Un système de comptage peut utiliser toute base positif.

Le système de numération binaire

Les ordinateurs ont essentiellement deux doigts. Ordinateurs préfèrent compter en utilisant la base 2. Le nombre 12310 serait exprimée de cette façon:

12310 0 = 2 *7 + 1 * 26 + 1 * 25 + 1 * 24 + 1 * 23 + 0 * 22 + 1 * 21 + 1 * 2012310 = 128 * + 0 1 + 1 * 64 * 32 * 16 + 1 + 1 + 0 * 8 * 4 + 2 * 1 * 1 + 1 = 011110112

Convention informatique exprime les nombres binaires en utilisant 4, 8, 16, 32, ou même 64 chiffres binaires, même si les premiers chiffres sont 0. Cela est également en raison de la façon dont les ordinateurs sont construits en interne.

Parce que le terme chiffre se réfère à un multiple de 10, une chiffre binaire est appelé un bit (une abréviation de chiffre binaire). UN octet est constitué de 8 bits. (Appel d'un chiffre binaire un il octet ne semble pas être une bonne idée.) en mémoire est généralement mesurée en octets (comme des petits pains sont mesurés en unités de la douzaine de boulanger).

Avec une telle petite base, vous devez utiliser un grand nombre de bits pour exprimer des nombres. Les êtres humains ne veulent pas les tracas de l'aide d'une expression telle que 011110112 d'exprimer une telle valeur banal que 12310. Les programmeurs préfèrent exprimer des nombres en utilisant un nombre pair de bits.

Le système octal - qui est basé sur 3 bits - est le système binaire par défaut dans les premiers jours de C. Nous voyons un vestige de cette même aujourd'hui - une constante qui commence par un 0 est supposé être octal en C ++. Ainsi, la ligne:

cout lt; lt; "0173 =" lt; lt; 0173 lt; lt; endl-

produit le résultat suivant:

0173 = 123

Cependant, octal a été presque complètement remplacé par le hexadécimal système qui est basé sur chiffres à 4 bits.

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 10, B 11, et ainsi de suite. Ainsi, 12310 devient 7B16, comme ça:

123 = 7 * 161 + B (à savoir 11) * 160 = 7B16

Les programmeurs préfèrent exprimer des nombres hexadécimaux en multiples de 4 chiffres hexadécimaux même lorsque le premier chiffre dans chaque cas est 0.

Enfin, qui veut exprimer un nombre hexadécimal comme 7B16 à l'aide d'un indice? Bornes ne sont même pas soutien indices. Même sur un traitement de texte, il est un frein pour changer des polices vers et à partir de l'indice en mode juste à taper deux chiffres moche.

Par conséquent, les programmeurs (pas dupes, ils) utilisent la convention de commencer un nombre hexadécimal avec un 0x. Ainsi, 7B devient 0x7B. Grâce à cette convention, le nombre hexadécimal 0x7B est égale à 123 décimales tout 0x123 hexadécimal est égal à 291 décimal. L'extrait de code

cout lt; lt; "= 0x7B" lt; lt; 0x7B lt; lt; endl-cout lt; lt; "0x123 =" lt; lt; 0x123 lt; lt; endl-

produit le résultat suivant:

0x7B = 1230x123 = 291

Vous pouvez utiliser tous les opérateurs mathématiques sur des nombres hexadécimaux de la même manière que vous les appliquez à des nombres décimaux.

Si vous voulez vraiment, vous pouvez écrire des nombres binaires en C ++ en utilisant le préfixe '14 '0b'. Ainsi, 123 devient 0b01111011.


» » » » Exprimez nombres binaires en C ++