IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Assembleur Discussion :

Comment convertir de la base 16 vers la base 10 ?


Sujet :

Assembleur

  1. #1
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut Comment convertir de la base 16 vers la base 10 ?
    Bonsoir,

    Pourriez-vous svp me dire comment on convertit une base 16 en base 10 ?

    Exemple :

    137 base 16 = 311 en base 10.

    Pourriez-vous me dire comment on arrive à ce résultat ?

    Merci d'avance.

    beegees

  2. #2
    Rédacteur
    Avatar de Neitsa
    Homme Profil pro
    Chercheur sécurité informatique
    Inscrit en
    Octobre 2003
    Messages
    1 041
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur sécurité informatique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 041
    Points : 1 956
    Points
    1 956
    Par défaut
    Bonjour,

    le plus simple pour une conversion hex2dec (hexadécimal vers décimal) est de faire une étape intermédiaire en base 2 :

    base 16 => base 2 => base 10

    On décompose en étapes :

    1) on décompose le nombre hexa en chiffre
    2) On décompose chaque chiffre en base 16 en quartet (nibble en anglais : paquet de 4 bits) binaire.
    3) on convertit les quartets binaires en décimal.

    --------

    1) 0x137 => 1 / 3 / 7

    ----------------
    2-A) on décompose 7 :

    0x07 en quartet binaire :

    0 1 1 1

    -----------------
    2-B) on décompose 3 :

    0x03 en quartet binaire :

    0 0 1 1

    ----------------------
    2-C) on décompose 1 :

    0x01 en quartet binaire :

    0 0 0 1

    ------------------------
    2-D) On rassemble les quartets :

    0001 0011 0111

    -----------------------
    3) bin2dec :

    On applique les puissances de 2 à chacune des positions dans le nombre binaire (je commence à droite, par le LSB, bit de poids faible):

    (N.B: j'ai laissé tombé les 0...)

    1 * 2^0 = 1
    1 * 2^1 = 2
    1 * 2^2 = 4
    ...
    1 * 2^4 = 16
    1 * 2^5 = 32
    ...
    1 * 2^8 = 256
    ...

    On ajoute le tout : 256 + 32 + 16 + 4 + 2 + 1 = 311

  3. #3
    Membre expérimenté
    Avatar de Juju_41
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Février 2003
    Messages
    974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Février 2003
    Messages : 974
    Points : 1 557
    Points
    1 557
    Par défaut
    Citation Envoyé par beegees
    137 base 16 = 311 en base 10.
    On peut aussi faire "simple" en décomposant directement en puissances de 16 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    137 base 16 = 1 * 16^2 + 3 * 16^1 + 7 * 16^0 
                = 1 * 256  + 3 * 16   + 7
                =     256  +   48     + 7
                = 311 base 10

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    633
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 633
    Points : 711
    Points
    711
    Par défaut
    Bonjour,
    Citation Envoyé par Neitsa
    Bonjour,

    le plus simple pour une conversion hex2dec (hexadécimal vers décimal) est de faire une étape intermédiaire en base 2 :

    base 16 => base 2 => base 10

    ... etc
    L'art de faire compliqué quand on peut faire simple.

    Moi, j'aurais la conversion comme ceci:

    base 16 -> base 8 -> base 32 -> base 2 -> base 10

    Pourquoi pas ?

  5. #5
    Rédacteur
    Avatar de Neitsa
    Homme Profil pro
    Chercheur sécurité informatique
    Inscrit en
    Octobre 2003
    Messages
    1 041
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur sécurité informatique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 041
    Points : 1 956
    Points
    1 956
    Par défaut
    L'art de faire compliqué quand on peut faire simple.
    L'art de faire simple mentalement ou avec un papier et un crayon sans calculatrice... tout au moins pour moi.

    Si la méthode de Juju_41 est bien plus simple que celle que j'ai pu proposer, j'ai personnellement du mal avec les puissances de 16 de tête.

    Chacun son truc.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    633
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 633
    Points : 711
    Points
    711
    Par défaut
    Bonjour,
    Citation Envoyé par Neitsa
    L'art de faire simple mentalement ou avec un papier et un crayon sans calculatrice... tout au moins pour moi.

    Si la méthode de Juju_41 est bien plus simple que celle que j'ai pu proposer, j'ai personnellement du mal avec les puissances de 16 de tête.

    Chacun son truc.
    Etant sur un forum de programmation, je ne pense pas que beegees cherche comment le faire de tête.

    Donc, il fallait lui expliquer l'algorithme de conversion d'une base vers une autre, dans lequel il est absolument inutile de passer par une base intermédiaire (ceci est d'ailleurs également valable s'il veut le faire de tête, peut-être que lui n'aura pas de problème avec les puissances de 16).

    C'est pour ça que j'ai plaisanté un peu.

  7. #7
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Bonjour à tous,

    Merci beaucoup pour vos nombreuses réponses.

    Etrangement, c'étais la seule conversion que je ne savais pas comment faire mais grâce à vous, j'ai en fin la solution.

    Merci à tous et bon Week-End.

    beegees

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    633
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 633
    Points : 711
    Points
    711
    Par défaut
    Bonjour,
    Citation Envoyé par beegees
    Etrangement, c'étais la seule conversion que je ne savais pas comment faire mais grâce à vous, j'ai en fin la solution.
    Bizarre.

    Convertir d'une base à une autre est un algorithme général, peu importe les valeurs effectives des bases, quand on a compris le principe, on peut l'appliquer à n'importe quelles bases.

    On rejoint là une des principes de la programmation bien conçue : travailler avec des algorithmes généraux, et ne penser aux détails qu'au moment de l'implémentation.

  9. #9
    Membre averti Avatar de mess-mate
    Inscrit en
    Septembre 2008
    Messages
    352
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 352
    Points : 358
    Points
    358
    Par défaut
    Bonjour,
    oui.. ça date, mais je suis aussi pour du Hex->Bin->Dec.
    Mais comment faire si le nombre décimal final doit être du type double ?
    Donc Hexa->Dec-double. ( en partant du hex )
    Extrait d'un double d'un fichier binaire en hex: 7B14AE47E17A943F .
    Ce nombre en décimal est 0.02.
    En binaire: 0111 1011 0001 0100 1010 1110 0100 0111 1110 0001 0111 1010 1001 0100 0011 1111 ( toujours vu du fichier binaire )

  10. #10
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2008
    Messages : 17
    Points : 13
    Points
    13
    Par défaut
    exp de convertir de base 16 à base 10::

    (117)=0001 0001 0111
    ==>de base 16 à base 2
    (0001 0001 0111)=2^9 + 2^5 + 2^3 + 2^2 + 2^1= le résultat est en décimal

  11. #11
    Membre chevronné
    Avatar de Forthman
    Homme Profil pro
    conception mécanique
    Inscrit en
    Janvier 2005
    Messages
    702
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : conception mécanique
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 702
    Points : 1 905
    Points
    1 905
    Par défaut
    sauf que tu t'es trompe d'un bit

    c'est 2^8 + 2^4 + 2^2 + 2^1 + 2^0

    Sinon, pour la conversion Hexa -> Decimal, je procède plutot comme ceci :

    Il faut juste connaitre de tête la valeur décimale des 16 premiers chiffres Hexa.
    Si je reprends la valeur précédente : 117h

    1*256 + 1*16 + 7 = 279

    a+ François

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WD19] Comment convertir une analyse HFSQL Client/Serveur en base
    Par koukic11 dans le forum WinDev
    Réponses: 0
    Dernier message: 02/06/2015, 14h52
  2. [XML] Comment convertir un fichier Vcard VCF vers un fichier XML ?
    Par Spheerys dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 04/02/2015, 11h38
  3. Comment convertir des fichiers texte Windows vers Unix
    Par hornetbzz dans le forum Contribuez
    Réponses: 17
    Dernier message: 11/02/2014, 14h46
  4. Réponses: 4
    Dernier message: 16/06/2011, 12h07
  5. Réponses: 0
    Dernier message: 16/08/2010, 16h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo