Bases numériques (preparataion pour c++)

  Comme nous étions enfants, nous avons tous utilisé décimales pour exprimer quantités. Cette nomenclature qui semble si logique pour nous peut ne pas sembler si à un habitant de la Rome classique. Pour eux, chaque symbole qu'ils ont écrit pour exprimer un nombre toujours représenté la même valeur:

I 1
II 2
III 3
IV 4
V 5


Tous les signes que je représente toujours la valeur 1 (un) où ils sont placés, et le signe V représente toujours une valeur de 5 (cinq). Néanmoins cela ne prend pas de place dans notre système décimal. Lorsque nous écrivons le symbole décimal 1 nous ne sommes pas toujours parlons d'une valeur de un (I en chiffres romains). Par exemple:

   1 I
  X 10
100 C


Dans ces cas, notre symbole 1 n'a pas toujours une valeur d'un (ou I en chiffres romains). Par exemple, dans le second cas, le symbole 1 représente une valeur de dix (ou X à l'époque romaine) et dans le troisième, 1 représente une valeur de cent (ou C).

Par exemple:

275 n'est pas équivalent à 2 +7 +5, il pourrait plutôt être décomposé en 200 +70 +5:

  200
+ 70
    5
  ---
  275


Par conséquent, le premier signe "2" est équivalent à 200 (2 x 100), le deuxième signe "7" est équivalent à 70 (7 x 10), tandis que le dernier signe correspond à la valeur 5 (5 x 1).

C'est parce que notre système est un système de numération positionnel. Cet effet la valeur d'un chiffre donné dépend de sa position dans le nombre entier étant représenté. Tout ce qui précède peut être mathématiquement représenté d'une manière très simple. Par exemple, pour représenter la valeur 182736, nous pouvons supposer que chaque chiffre est le produit de lui-même multiplié par 10 propulsé à sa place comme exposant, à commencer par le droit à 100, à la suite avec 101, 102, et ainsi de suite:
la base decimale
Nombre octal (base 8)
Comme nos numéros "normaux" sont en base 10 (ou radix 10) parce que nous avons 10 chiffres différents (du 0 au 9):

0123456789

les numéros des octal ne comprennent que les représentations des valeurs de 0 à 7:

01234567

et, par conséquent, sa base mathématique est de 8. En C + + nombres octaux sont indiqués en commençant toujours par un chiffre 0. Voyons comment nous pourrions écrire les premiers numéros en octal:

octal décimal
------------
   0 0 (zéro)
  01 1 (un)
  02 2 (deux)
  03 3 (trois)
  04 4 (quatre)
  05 5 (cinq)
  06 6 (six)
  07 sept (7)
010 8 (huit)
011 9 (neuf)
012 10 (dix)
013 11 (onze)
014 12 (douze)
015 13 (treize)
016 14 (quatorze)
017 15 (quinze)
020 16 (seize)
021 17 (dix-sept)


Ainsi, par exemple, le nombre 17 (dix-sept ans, ou XVII romain) il est exprimé 021 comme un nombre octal en C + +. Nous pouvons appliquer le même mécanisme que nous avons vu précédemment pour les nombres décimaux pour les nombres octaux simplement en considérant que sa base est de 8. Par exemple, en prenant le nombre octal 071 263:

base_octal.gif

donc le nombre octal 071 263 est exprimée en 29363 en nombres décimaux.

Les nombres hexadécimaux (base 16)
Comme nombres décimaux avoir 10 chiffres différents pour être représentés (0123456789) et le nombre octal avoir 8 (01234567), nombres hexadécimaux comporter 16 chiffres différents qui sont représentés par les chiffres de 0 à 9 et les lettres A, B, C, D, E et F, qui servent ensemble nous représentons les 16 symboles différents que nous devons exprimer 16 numéros de base:

décimal hexadécimal
------------------
       0 0 (zéro)
     0x1 1 (un)
     0x2 2 (deux)
     0x3 3 (trois)
     0x4 4 (quatre)
     0x5 5 (cinq)
     0x6 6 (six)
     0x7 7 (sept)
     0x8 8 (huit)
     0x9 9 (neuf)
     0xA 10 (dix)
     0xB onze (11)
     0xC 12 (douze)
     0xD 13 (treize)
     0xE 14 (quatorze)
     0xF 15 (quinze)
    0x10 16 (seize)
    0x11 17 (dix-sept)


En C + +, nombres hexadécimaux sont précédés par 0x (zéro, x).

Une fois de plus, nous pouvons utiliser la même méthode pour traduire un certain nombre d'une base à l'autre:
base_hexadecimal.gif

Représentations binaires
Octal et nombres hexadécimaux ont un avantage considérable sur nos nombres décimaux dans le monde de bits, et c'est que leurs bases (8 et 16) sont des multiples parfaites de 2 (23 et 24, respectivement), ce qui nous permet de faire des conversions faciles de ces bases en binaire que de nombres décimaux (dont la base est 2x5). Par exemple, supposons que nous voulons traduire la séquence binaire suivante pour nombre d'autres bases:

110011111010010100

Pour traduire cela en décimal, nous aurions besoin de procéder à une opération mathématique similaire à celui que nous avons utilisé auparavant pour convertir hexadécimal ou octal, ce qui nous donnerait le nombre décimal 212628.

Néanmoins, pour passer cette séquence pour octal cela ne vous prendra quelques secondes et nous même les moins qualifiés en mathématiques peuvent le faire juste en la voyant: Depuis 8 est 23, nous séparons la valeur binaire dans des groupes de 3 chiffres:

110 011 111 010 010 100


et maintenant nous avons juste à traduire en octal numberal radix chaque groupe séparément:

110 011 111 010 010 100
  6 3 7 2 2 4


donnant le numéro 637 224 comme résultat. Ce même processus peut être inversement effectué pour passer de octal en binaire.
Afin de procéder à l'opération avec des nombres hexadécimaux Nous n'avons qu'à effectuer le même processus, mais séparant la valeur binaire en groupes de 4 chiffres, parce que 16 = 24:

11 0011 1110 1001 0100
3 3 9 4 E


Par conséquent, l'expression binaire 110011111010010100 peut être représenté en C + + soit en 212628 (décimal), que 0.637.224 (octal) ou 0x33e94 (hexadécimal).

Le code hexadécimal est spécialement intéressant en informatique puisque de nos jours, les ordinateurs sont basés sur des octets composé de 8 bits binaires et donc chaque match octet avec la gamme que 2 nombres hexadécimaux peuvent représenter. Pour cette raison, il est si souvent utilisé pour représenter les valeurs traduits de ou vers la base binaire.

Publié par Drupal french Study