Notation pour les nombres binaires comme 1000100B - 1

« Salut Amigo ! »

"Salut, Bilaabo !"

"Je veux vous parler un peu des différents systèmes de numérotation."

"Vous avez déjà entendu dire que les gens utilisent le système décimal. Voici les principaux faits de ce système :

1)  10 chiffres sont utilisés pour écrire les nombres : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9.

2)  Le nombre 543 signifie 5 centaines + 4 dizaines + 3 unités.

"Cela équivaut à écrire 5*100 + 4*10 + 3*1, qui peut être écrit comme 5*10 2 + 4*10 1 + 3*10 0 .

Notez que les milliers, les centaines, les dizaines et les unités sont des puissances du nombre 10.

1) Un est égal à 10 à la puissance zéro.

2)  Dix égale 10 à la première puissance.

3) Cent égale 10 puissance 2.

4)  Mille égale 10 à la troisième puissance, etc.

"Ouais. J'ai compris."

"Mais imaginez maintenant que nous n'avons que 8 chiffres. Ensuite, nous avons le système octal. Voici ses principaux faits :"

1)  8 chiffres sont utilisés pour écrire les nombres : 0, 1, 2, 3, 4, 5, 6, 7.

2)  Le nombre 543 8 signifie 5*8 2 +4*8 1 +3*8 0 . En d'autres termes, c'est 5*64 + 4*8 + 3*1 = 320+32+3 = 320+32+3=355 10

J'ai écrit 8 et 10 en indices pour indiquer combien de chiffres sont utilisés pour représenter le nombre.

"Je pense que j'ai compris. Je pense que je pourrais convertir un nombre du système octal en décimal. Mais je ne pourrais probablement pas aller dans l'autre sens."

"Ce n'est pas si difficile. Imaginez que vous deviez utiliser plusieurs camions pour déplacer un tas de sable. Vous avez des camions à benne basculante, des camions ordinaires et de très petits camions. Mais les camions ne peuvent pas partir s'ils ne sont pas pleins."

« Comment feriez-vous ? »

"D'abord, je remplissais les camions à benne, puisque ce sont les plus gros. Puis, quand j'ai vu qu'il n'y avait pas assez de sable pour remplir le camion, je passais aux plus petits véhicules. Et puis les encore plus petits."

"C'est en fait très similaire ici. Essayons de reconvertir le nombre 355 10 en octal."

"Premièrement, nous le divisons par 64 (8 2 ) et obtenons 5 avec un reste de 35. Cela signifie que le premier chiffre de notre nombre est 5. Ensuite, nous divisons le reste par 8 (8 1 ) et obtenons 4 avec un reste de 3. Ainsi, nous obtenons le nombre 543 8 ."

"Au fait, vous pouvez aussi vous déplacer dans l'autre sens. Après tout, 543 8 == 5*64+4*8+3 == ((5)*8+4)*8+3. Notre "dizaine octale " et "des centaines" doivent être divisés par 8. Par conséquent, le reste de la division par 8 sera nos chiffres octaux."

"D'abord, divisons 355 par 8. Nous obtenons 44 avec un reste de 3. C'est-à-dire 355=44*8+3. Et 44 peut être représenté par 5*8+4. Ainsi, 355= (5*8+ 4)*8+3 ; Voici nos chiffres : 5, 4, 3. Le nombre que nous recherchons est 543 8 ."

"Je pense que j'ai compris, mais je vais devoir m'entraîner un peu pour tout comprendre."

"La programmation implique souvent l'utilisation de nombres avec des bases différentes (c'est-à-dire le nombre de chiffres utilisés dans le système de numérotation). Les plus populaires sont 2, 8, 10, 16 et 64."

« Mais pourquoi est-ce nécessaire ? Pourquoi avons-nous besoin de nombres représentés par 2, 8, 16 ou 64 chiffres ?

"Il s'agit de la façon dont le processeur fonctionne en interne. De manière très simpliste, si le courant circule dans un fil, alors nous disons que sa valeur est 1 ; s'il n'y a pas de courant, alors sa valeur est 0. Tous les nombres sont stockés dans des cellules de mémoire. Ces les cellules ont une conception très basique. Et elles ne peuvent stocker que 0 ou 1. "

"Mais une telle simplification (seulement 0 ou 1) a permis de rendre très petits les éléments à l'intérieur du processeur et de la mémoire. Les processeurs et les modules de mémoire modernes comprennent des milliards d'éléments différents. Et leur surface ne dépasse souvent pas un centimètre carré."

« Whoa. Maintenant je sais.

"Maintenant, nous passons aux nombres binaires. Ici, nous avons la même chose qu'avec l'octal, mais plus facilement."

1)  2 chiffres sont utilisés pour écrire les nombres : 0, 1.

2)  Le nombre 101 2 signifie 1*2 2 + 0*2 1 + 1*2 0 . En d'autres termes, c'est 1*4+0*2+1*1 =4+1=51 10

"Oui. Je me souviens. Une cellule, qui peut avoir une valeur de 0 ou 1, s'appelle un bit. Mais elle ne peut pas stocker beaucoup d'informations, elles sont donc combinées en groupes de 8. Ces groupes sont appelés octets. "

"Exactement. Un octet est un groupe de huit bits. Il peut stocker les valeurs suivantes : 00000000, 00000001, ... 11111111. Ces valeurs correspondent aux nombres décimaux 0,1, ... 255. Ce qui nous donne un total de 256 valeurs."

Quel est le plus grand entier en Java ? Ou plutôt quel est son type ?

"Un long. Un long se compose de 8 octets. En d'autres termes, 64 bits. Il peut stocker des valeurs de -2 63 jusqu'à 2 63 -1.

"Ouais. Je n'aborderai pas la façon de convertir des nombres décimaux en binaires ou vice versa. Sinon, la leçon serait trop longue."

"Au lieu de cela, parlons un peu plus du système hexadécimal."

"Oui, c'est très intéressant. Pour les systèmes binaire et octal, nous nous sommes simplement débarrassés des chiffres, en commençant par deux et huit, respectivement. Mais qu'est-ce qu'on fait ici ? Ajouter de nouveaux chiffres ?"

"Exactement ! Regarde ça : "

1) 16 chiffres sont utilisés pour écrire les nombres : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F.

2) Le nombre 543 16 signifie 5*16 2 + 4*16 1 + 3*16 0 . En d'autres termes, c'est 5*256+4*16+3*1 = 1280+64+3 = 1347 10

"Alors, nous avons juste ajouté des lettres en tant que chiffres ? O_o"

"Oui. Et quel est le problème ? Pourquoi inventer de nouveaux chiffres alors que les lettres fonctionnent parfaitement ? Jetez-y un coup d'œil : "

Chiffre hexadécimal Valeur décimale
0 0
1 1
8 8
9 9
UN dix
B 11
C 12
D 13
E 14
F 15

"Je ne parlerai pas non plus de la conversion de décimal en hexadécimal. Mais voici un fait intéressant. Un chiffre hexadécimal est représenté par exactement 4 bits, avec des valeurs de 0 à 15. Ainsi, un octet peut être écrit avec huit chiffres binaires (0 ou 1) ou deux chiffres hexadécimaux."

"Voici un exemple :"

Nombre décimal Nombre binaire Nombre hexadécimal
0 0000 0000 00
1 0000 0001 01
15 0000 1111 0f
16 0001 0000 dix
31 0001 1111 1f
32 0010 0000 20
128 1000 0000 80
129 1000 0001 81
255 1111 1111 ff

"La représentation hexadécimale est facilement convertie en binaire (et vice versa). C'est pourquoi la représentation interne en octets d'un nombre est rarement donnée en binaire (en utilisant des 0 et des 1) en programmation. Ce serait trop long et difficile à comprendre. Notation hexadécimale est beaucoup plus lisible et compact."

"Je suis d'accord. Même moi j'ai aimé ça."

"Au fait, Java vous permet d'écrire des nombres dans divers systèmes de numérotation directement dans le code :"

Base Caractéristique Exemples Numéros invalides
2 0b  au début du nombre 0b 00001111 0b 11111 2 1
8 0  au début du numéro 0 1234343 0 12 8
dix Aucun 95459 909 un
16 0x  au début du numéro 0x 10ff 0x 1c gh

"Excellente leçon. Merci, Bilaabo."