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 :

Conversion entre base 10 et bases 2, 4 et 16


Sujet :

Assembleur

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Juillet 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Juillet 2019
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Conversion entre base 10 et bases 2, 4 et 16
    Bonjour ,

    Comment sait-on que nous sommes en base 10 et pas en base 12 ou 5.
    Je ne comprends pas ce principe de base.

    Pouvez vous m'expliquer de manière détaillée svp les exemples suivants:

    201 base 10 vers la base 2
    100110 base 2 vers la base 10
    1480 base 10 vers la base 4
    450 base 10 vers la base 16

    Je vous remercie du fond du coeur.
    Emy

  2. #2
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 140
    Points
    10 140
    Par défaut
    Bonjour,

    1) Ta question n'a rien n'a voir avec l'assembleur

    2) Maintenant pour ta question :
    Comment sait-on que nous sommes en base 10 et pas en base 12 ou 5.
    Je ne comprends pas ce principe de base.
    Ben tu ne le devine pas, on te le dit explicitement, si on parle de cours de math, tu aura par exemple 42(10) pour indiquer qu'on parle de 42 en décimal ou 10(16) pour dire que c'est du 10 en hexa etc. etc.
    Dans les langages de programmation (comme l'assembleur) c'est pareil, tu auras plein de suffixes ou préfixes qui l’indiqueront comme 0x45 , 45h ou $45 sont plein de façon d'indiquer l’hexadécimal (en général le décimal ne demande aucune autre précision).

    3) On ne fait pas l'exo des gens, dis plutôt ce qui te bloque dans les conversions, mais normalement tu as eu un cours sur ça.

  3. #3
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 438
    Points : 43 081
    Points
    43 081
    Par défaut
    Ben tu ne le devine pas , on te le dis explicitement , si on parle de cours de math , tu aura par exemple 42(10) pour indiquer qu'on parle de 42 en décimal ou 10(16) pour dire que c'est du 10 en hexa etc etc
    Ca c'est au niveau mathématique. Et bien sûr quand rien n'est précisé, c'est qu'on est en base 10.

    Et au niveau informatique on utilisera 0x10 en notation AT&T et 10h en notation Intel pour désigner une valeur hexadécimale correspondant à 16 en décimal, et 10b pour la valeur binaire correspondant à 2.

    En informatique on utilise pas les autres base mise à part octosimale (base 8) en C, mais pas en assembleur et c'est très peu courant.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  4. #4
    Membre expérimenté
    Avatar de sambia39
    Homme Profil pro
    No Comment
    Inscrit en
    Mai 2010
    Messages
    543
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : No Comment
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2010
    Messages : 543
    Points : 1 745
    Points
    1 745
    Par défaut
    Bonjour,
    Citation Envoyé par chrtophe Voir le message
    En informatique on utilise pas les autres base mise à part octosimale (base 8) en C, mais pas en assembleur et c'est très peu courant.


    Vous ne vous êtes pas trompé ?
    À ce que je sache, en numération de base informatique en parles de système octal également appelé base 8 et non octosimale (base 8) et ni en langage C (qui d'ailleurs est inconnue au bataillon -> unaire, binaire, ternaire, quaternaire, quinaire, sénaire, septénaire, octal, nonaire.)

    à bientôt.

    Celui qui peut, agit. Celui qui ne peut pas, enseigne.
    Il y a deux sortes de savants: les spécialistes, qui connaissent tout sur rien,
    et les philosophes, qui ne connaissent rien sur tout.
    George Bernard Shaw

  5. #5
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 438
    Points : 43 081
    Points
    43 081
    Par défaut
    Effectivement, je viens d'inventer un nouveau mot. C'est bien octal.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  6. #6
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Bonjour,

    Cette question est si fréquente que j'ai déjà donné cette réponse assez souvent :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
     
    Calcul dans différentes bases
     
    Conventions
     
    Dans tout ce document, on va utiliser les notations suivantes:
     
    Le symbole ^ signifie 'élever à la puissance'
    par exemple 10^3 signifie 'élever 10 à la puissance 3' c'est à dire 10*10*10 = 1000
     
    Un nombre suivi par
    #B est écrit en base 2  (B pour binaire)
    #H est écrit en base 16 (H pour Hexadécimal)
    sans précision, il est écrit en base 10
     
    Le symbole * signifie 'multiplier'
     
    Dans les calculs, pour les divisions :
      Q signifie Quotient
      R signifie Reste
     
    Rappel : Tout nombre élevé à la puissance 0 (zéro) vaut 1
    (10^0 = 2^0 = 16^0 = 1)
     
     
     
    Quand nous écrivons un nombre, par exemple 573, cela signifie qu'il est égal à la somme:
     
      3 * 10^0  = 3*1    =    3
    + 7 * 10^1  = 7*10   =   70
    + 5 * 10^2  = 5*100  =  500
                           -----
                            573
     
     
    On peut transcrire cela dans une autre base, par exemple en base 2
     
    On ne disposera alors que de 2 symboles, 0 et 1.
    Les chiffres en partant de la DROITE signifieront :
    0 ou 1 * 2^0
             2^1
             2^2
             2^3
             etc...
     
    Soit le nombre 1000111101#B, calculons sa valeur en base 10
     
      1 * 2^0  = 1
    + 0 * 2^1  = 0
    + 1 * 2^2  = 4
    + 1 * 2^3  = 8
    + 1 * 2^4  = 16
    + 1 * 2^5  = 32
    + 0 * 2^6  = 0
    + 0 * 2^7  = 0
    + 0 * 2^8  = 0
    + 1 * 2^9  = 512
                -----
                 573
     
    On peut utiliser une autre base, 16.
    Il nous faut alors 16 symboles pour représenter les différents 'chiffres'.
    Par convention, on a choisi d'utiliser 0 à 9, puis A à F
     
    A vaut donc 10 (décimal)
    B = 11
    C = 12
    D = 13
    E = 14
    F = 15
     
    Avec le même principe que pour la base 2, voyons le nombre 23D#H
     
      D * 16^0 =  13
    + 3 * 16^1 =  48
    + 2 * 16^2 = 512
                -----
                 573
     
    Le passage d'une base quelconque en base 10 est donc très simple.
     
     
     
     
    Voyons maintenant comment passer de la base 10 à une autre, exemple en base 16.
     
    La technique suivante permet de trouver les chiffres successifs en partant de la DROITE.
     
    soit le nombre 573.
    Divisons le par la base destination, soit 16
    573 / 16 = 35(Q) + 13(R)
      le reste = 13 = D#H est le premier chiffre à droite de la valeur cherchée
     
    répétons le calcul avec le quotient du calcul précédent (35)
    35 / 16 = 2(Q) + 3(R)
      le reste = 3 = 3#H est le deuxième chiffre en partant de la droite
     
    et encore une fois :
    2 / 16 = 0(Q) + 2(R)
      le reste = 2 = 2#H est le troisième chiffre en partant de la droite
     
    Comme le quotient = 0, on peut arrêter.
     
    Le nombre 573 s'écrit donc 23D#H
     
    En supprimant les commentaires, on obtient une disposition claire:
     
              (Q)   (R)   (R en base 16)
    573 / 16 = 35 + 13      D
     35 / 16 =  2 +  3      3
      2 / 16 =  0 +  2      2
     
      On lit les restes de bas en haut = 23D#H
     
     
    Refaisons le calcul pour écrire 573 en base 2
     
              (Q)    (R)
    573 / 2 = 286   + 1
    286 / 2 = 143   + 0
    143 / 2 =  71   + 1
     71 / 2 =  35   + 1
     35 / 2 =  17   + 1
     17 / 2 =   8   + 1
      8 / 2 =   4   + 0
      4 / 2 =   2   + 0
      2 / 2 =   1   + 0
      1 / 2 =   0   + 1
     
      terminé puisque le quotient = 0
     
      et donc en lisant les restes de bas en haut, la valeur est 1000111101#B
     
     
    Voilà, j'espère que c'est assez clair.
    Ne pas faire attention à la coloration, c'est dû à l'utilisation de la balise code
    Si les cons volaient, il ferait nuit à midi.

  7. #7
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 726
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 726
    Points : 15 126
    Points
    15 126
    Par défaut
    Citation Envoyé par droggo Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    soit le nombre 573.
    Divisons le par la base destination, soit 16
    [...]
    Voilà, j'espère que c'est assez clair.
    Ben non, parce qu'il manque un trait d'union, (dernier exemple)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Divisons-le par la base destination, soit 16
    Ça change la vie ! Et la compréhension,

    Sinon, très bien le tuto
    Mais il faudra revoir "c'est à dire" (ligne 9) --> c'est-à-dire, hé oui !
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  8. #8
    Membre expérimenté
    Avatar de sambia39
    Homme Profil pro
    No Comment
    Inscrit en
    Mai 2010
    Messages
    543
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : No Comment
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2010
    Messages : 543
    Points : 1 745
    Points
    1 745
    Par défaut
    Citation Envoyé par droggo Voir le message
    Un nombre suivi par
    #B est écrit en base 2 (B pour binaire)
    #H est écrit en base 16 (H pour Hexadécimal)
    sans précision, il est écrit en base 10
    Soit le nombre 1000111101#B, calculons sa valeur en base 10
    le reste = 13 = D#H est le premier chiffre à droite de la valeur cherchée
    le reste = 3 = 3#H est le deuxième chiffre en partant de la droite
    le reste = 2 = 2#H est le troisième chiffre en partant de la droite
    Le nombre 573 s'écrit donc 23D#H
    On lit les restes de bas en haut = 23D#H
    et donc en lisant les restes de bas en haut, la valeur est 1000111101#B
    Voilà, j'espère que c'est assez clair.
    Attention aux différentes notations énoncé ci-dessus(1000111101#B,D#H etc..) , car cela porte à confusion pour les non-initiées ; normalement (en informatique, assembleur voire de la rétro-ingénierie) on utilise généralement le suffixe "d" pour identifier les nombres décimaux. "b" pour les nombres binaires (et même le préfixe "0b" utilisé par le compilateur GCC pour son extension de langage non-standard) quant aux nombres hexa, c'est soit le le préfixe "0x" ou le suffixe "h" (on trouve également la notation suivante 012ABCDFh.).
    Quant bien même l'explication donnée soit fort intéressent, un débutant qui va se heurté a une notation tel que "0b10001101111" ou "$ABCD" peut ne pas forcement comprendre que c'est du binaire et de l'hexa.
    Celui qui peut, agit. Celui qui ne peut pas, enseigne.
    Il y a deux sortes de savants: les spécialistes, qui connaissent tout sur rien,
    et les philosophes, qui ne connaissent rien sur tout.
    George Bernard Shaw

Discussions similaires

  1. [TPW] Programme de conversion entre bases : erreur 104
    Par azir12345 dans le forum Turbo Pascal
    Réponses: 1
    Dernier message: 24/05/2017, 10h29
  2. Réponses: 2
    Dernier message: 12/09/2014, 10h33
  3. [TPW] Conversion entre bases de 2 à 36
    Par forum dans le forum Codes sources à télécharger
    Réponses: 0
    Dernier message: 15/11/2011, 19h45
  4. Réponses: 2
    Dernier message: 30/06/2010, 22h35
  5. Conversion de base entre Access 97 & 2003
    Par perraced dans le forum Access
    Réponses: 1
    Dernier message: 24/07/2007, 17h10

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