CONNEXION
  • RetourJeux
    • Tests
    • Soluces
    • Previews
    • Sorties
    • Hit Parade
    • Les + attendus
    • Tous les Jeux
  • RetourActu
    • Culture Geek
    • Astuces
    • Réalité Virtuelle
    • Rétrogaming
    • Toutes les actus
  • RetourHigh-Tech
    • Actus JVTECH
    • Bons plans
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTECH
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch
    • Xbox Series
    • Overwatch 2
    • FUT 23
    • League of Legends
    • Genshin Impact
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • PS4
  • One
  • Switch
  • Wii U
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Etoile Abonnement RSS

Sujet : Hexadecimal => Base 2 et inversement ?

DébutPage précedente
1
Page suivantePage suivante
TommyVercittee TommyVercittee
MP
Niveau 10
23 octobre 2014 à 19:36:59

Bonsoir ! Pour les besoins d'un TP à rendre début Décembre je dois programmer un truc en C++ qui puisse convertir une valeur en base 2 entrée par l'utilisateur en Hexadecimal ou inversement.

Je maîtrise bien les deux conversions séparément (avec la base 10 je veux dire), mais ENSEMBLE je ne sais pas comment passer de l'une à l'autre...base 2 et base 16 ou inversement.

Déjà, pourrait-on me l'expliquer clairement ? J'ai fais des recherches mais ça m'a plus embrouillé sur ce que je pensais savoir qu'autre chose :rire:

Merci :)

godrik godrik
MP
Niveau 22
23 octobre 2014 à 19:43:10

Note que si tu sais convertir en base 10, tu peux toujours faire la conversion de base 2 a base 10 a base 16. Et inversement. C'est moche, mais en premiere approx c'est pas mal.

Aussi tu peux remarquer qu'un "digit" de base 16 ca corespond a 4 "digit" de base 2. du fait, la conversion se fait sur un groupe comme ca.

Tikim Tikim
MP
Niveau 21
23 octobre 2014 à 19:52:16

Tu analyses le dernier caractère et tu lui attribues une valeur de 0 à 15 selon le caractère, tu multiplie par 16^0. Puis le second pareil pour la valeur mais tu multiplies par 16^1, etc. Ça c'est pour hexa-> décimal si t'en as besoin.

Pour hexa vers binaire c'est super simple, chaque caractère hexa représente 4 caractères binaires ya rien à compter. 0x0 = 0b0000, 0x4 = 0b0100, 0xF = 0b1111, etc. Attention à toujours écrire les 4 caractères ! Fais simplement une table de correspondance :)

Pour binaire vers hexa c'est l'inverse, et si le nombre total de caractères binaires n'est pas un multiple de 4,rajoute des 0 à gauche pour avoir un multiple de 4.puis 4 par 4 tu fais correspondre binaire vers hexa.

TommyVercittee TommyVercittee
MP
Niveau 10
23 octobre 2014 à 19:53:31

Oui, j'ai pensé à un algo utilisant la base 10 comme intermédiaire, mais je garde ça en plan B ! Ouais j'ai vu cette histoire de 4 digit. Mais mathématiquement parlant je n'arrive pas à me représenter la chose justement, aussi bête que ça puisse être ( et je peux être vraiment bête ). Aurais-tu un exemple ? :)

Tikim Tikim
MP
Niveau 21
23 octobre 2014 à 19:53:53

Note qu'en ingénierie personne s'amuse à calculer pour faire du binaire vers hexa ou l'inverse. On fait correspondre 4 binaires vers 1 hexa ou l'inverse. C'est en base 10 qu'il faut calculer ^^

TommyVercittee TommyVercittee
MP
Niveau 10
23 octobre 2014 à 19:54:12

Ah ok Tikim ! Merci, je vais essayer ça de suite :p)

Tikim Tikim
MP
Niveau 21
23 octobre 2014 à 20:02:24

Ya pas de maths ici ! C'est un genre de traducteur !

Exemple tu as 0xA5F1, tu prends le À qui donne 10 en décimal, donc 0b1010 (8+0+2+0). Puis le 5 qui vaut... 5 ^^ donc 0b0101 (0+4+0+1).puis F qui vaut 15, donc 0b1111 (8+4+2+1),et finalement 1 qui vaut... 1 ! Donc 0b0001 (0+0+0+1).

Et tu alignes ! Ça fait 0b1010010111110001 (par convention on séparé d'un espace tous les 4 chiffres pour plus facilemebt repasser en hexa).

Pour l'opération inverse si tu as 0b110100001.
Deja ya que 9 digit, il faut un multiple de 4 donc ajouté 3 zéros : 0b000110100001 qu'on va ecrire selon la convention : 0001 1010 0001.

Et la on traduit : 0001 vaut 1, 1010 vaut 10 donc À, 0001 vaut 1 : ça fait 0x1A1.

Voila :)

Tikim Tikim
MP
Niveau 21
23 octobre 2014 à 20:03:48

Et je mérite une médaille pour avoir tapé ça sur smartphone :/

Lowenheim Lowenheim
MP
Niveau 10
23 octobre 2014 à 20:25:08

Par contre, dire qu'il "n'y a pas de maths", c'est un peu rapide, certes une fois qu'on connait ça ce n'est qu'une recette de cuisine, mais il faut tout de même comprendre pourquoi ça marche, et ça se prouve en revenant à la définition de l'écriture en base 2 / 16.

Par exemple pour passer de base 16 à 2 :

n = Somme des k_i . 16^i
= Somme des k_i . 2^4i
= une écriture binaire où les bits 4i à 4(i+1) sont la décomposition du digit k_i

... mais moi je n'ai pas le courage d'écrire ça plus formellement sur jvc :o))

Tikim Tikim
MP
Niveau 21
23 octobre 2014 à 20:33:21

Bien sûr, d'une manière générale si on s'intéresse aux différentes bases il FAUT comprendre le fonctionnement des bases. Mais quand on traite de l'hexa et du binaire, y'a des réflexes à avoir pour pas faire un fromage mathématique. C'est un raccourci que tout le monde prend en informatique.

Je pense que si l'enseignant avait voulu enseigner les bases, il en aurait pris d'autres que 2 et 16. Genre convertit de la base 17 en base 7. Là, perso je passerais par le décimal, mais y'a sûrement plus intelligent.

BuretteGraduee BuretteGraduee
MP
Niveau 10
24 octobre 2014 à 03:10:55

Le plus simple pour passer de 2 -> 16 c'est de prendre les bits 4 à 4.
Genre tu as
01011011
ca fait 0101 et 1011 tu convertis ca fait :
5B :ok:

Pseudo supprimé
Niveau 10
24 octobre 2014 à 04:33:27

La conversion de bases est un homomorphisme de monoïdes :D
Les maths trouvent toujours un chemin ;D

DébutPage précedente
1
Page suivantePage suivante
Répondre
Prévisu
?
Victime de harcèlement en ligne : comment réagir ?
Infos 0 connecté(s)

Gestion du forum

Modérateurs : godrik, LGV
Contacter les modérateurs - Règles du forum

Sujets à ne pas manquer

La vidéo du moment