Extraire un chiffre en binnaire
Bonsoir, voila je voudrais savoir comment extrair des nombre dans un nombre en binnaire:
je m'explique:
j'ai par example un nombre en binnaire (4100)
0001 || 00 || 0000000100
je voudrai savoir comment on peut extraire chaque nombre ?
(le 100 (4) // le 00 (0) // le 0001 (1))
extraire le 4 0 et 1 ?
le seul nombre que j'arrive a extraire est le "4" en faisant 4100 MOD 1024
d'avance merci
Re: Extraire un chiffre en binnaire
Salut
Citation:
Envoyé par BoBy9
j'ai par example un nombre en binnaire (4100)
4100, c'est pas trop binaire comme nombre...
Citation:
Envoyé par BoBy9
0001 || 00 || 0000000100
je voudrai savoir comment on peut extraire chaque nombre ?
(le 100 (4) // le 00 (0) // le 0001 (1))
???? c'est quoi ces nombres???
Citation:
Envoyé par BoBy9
4100 mod 1024 = 1
En temps normal, 4100 mod 1024 ça fait 4...
Citation:
Envoyé par BoBy9
pour recup les 2 eme nombre:
4 mod 4 = 0
Pourquoi modulo 4??
Citation:
Envoyé par BoBy9
si quelqu'un connait une (Meilleur) solution, je suis prenneur
Disons que je ne sais pas si ta méthode est bonne, elle est présentée de manière tellement bordélique que je ne pige pas la logique...
La méthode habituelle, c'est de diviser ton nombre décimal par des puissances de 2 décroissantes, la partie entière de la division donnant le chiffre binaire du rang courant, et de continuer avec la puissance de deux immédiatement inférieure à diviser le reste de la division précédente.
Pour illustrer, la première puissance de 2 inférieure à 4100, c'est 2^12=4096, donc tu te fais un tableau à 12 cases, pour stocker ke résultat.
4100/4096=1, reste 4 (l'équivalent du 4100 mod 4096). Tu mets le 1 dans la 12ème case du tableau
puissance de 2 inférieure: 2^11=2048, et 4/2048=0, reste 4. Tu mets un 0 dans la 11ème case
puissance de 2 inférieure: 2^10=1024, et 4/1024=0, reste 4. Tu mets un 0 dans la 10ème case
Ainsi de suite, jusqu'à:
puissance de 2 inférieure: 2^2=4, et 4/4=1, reste 0. Tu mets un 0 dans la 2ème case
Ensuite, vu que le reste est 0, tu remplis les cases qui restent avec des 0.
Et tu trouves ton résultat:
1 0 0 0 0 0 0 0 0 0 1 0 0
Reste plus qu'à mettre les zéros qu'il faut à gauche pour avoir le bon nombre de chiffres que tu veux...
Re: Extraire un chiffre en binnaire
Citation:
Envoyé par plegat
Disons que je ne sais pas si ta méthode est bonne, elle est présentée de manière tellement bordélique que je ne pige pas la logique...
:mouarf3: Tout à fait d'accord !
Par contre, la méthode la plus simple pour extraire certains bits, c'est de faire des "masques" avec l'opérateur & (et bit-à-bit):
4 & 4 = 4
5 & 4 = 4
9 & 4 = 0
13 & 5 = 5
12 & 5 = 4
...
Après, on peut utiliser !!x pour tranformer le réulstat en 0 ou 1, faire des décalages de bits avec >> et <<...
En C++, il est également possible d'utiliser des structures avec des champs de bit (voir: http://c.developpez.com/tutcpp/c1219.php, paragraphe 3.1.4). C'est très clair, mais ça produit des exécutables un peu plus gros (à cause du "mapping" sur les bits), mais c'est un problème secondaire.