Partage
  • Partager sur Facebook
  • Partager sur Twitter

[HEXADÉCIMAL -> Binaire]Comment?

Sujet résolu
    28 mars 2007 à 3:22:27

    Bonjour!

    Afin d'assoupir ma soif d'apprendre, j'ai une question qui trotte dans mon esprit depuis longtemps!

    Les gens qui ont inventé les ordis., comment ils on fait pour dire au CPu qui comprend QUE DU BINAIRE, de transformé de l'Hexadécimal en binaire!

    Voilà!

    P.S: il s'agit du seul forum que j'ai trouvé le plus approprié!En espérant avoir été clair.
    • Partager sur Facebook
    • Partager sur Twitter
      28 mars 2007 à 16:52:02

      ce n'est pas les "créateurs" du CPU qui lui ont dit de ne comprendre que le binaire, c'est simplement qu'un CPU est fait de millions de transistors qui n'ont que deux états :
      0 -> le courant ne passe pas.
      1 -> le courant passe.

      Et ce qui "transforme" l'héxa en binaire c'est plus ou moins naturel (j'en sais pas plus) car l'héxa n'est qu'une "représentation"
      • Partager sur Facebook
      • Partager sur Twitter
        28 mars 2007 à 18:09:21

        Bah nous quand on dit 4F en hexa, l'ordinateur note 01001111 en binaire, c'est tout con.
        • Partager sur Facebook
        • Partager sur Twitter
          28 mars 2007 à 21:06:01

          Oui, tous ça je sais! Mais comment il transforme le 4F en 01001111?

          Pas ce que ça donne!
          • Partager sur Facebook
          • Partager sur Twitter
            28 mars 2007 à 21:12:36

            Tu le décompose en 2 parties de 4.

            0100
            8421 >poids tout est à 0 sauf pour le poid 4 qui est a 1 donc on a 4.

            1111 en binaire
            8421
            Pour celui ci tout est à 1 donc 8+4+2+1=15 15 en décimal équivaut à F en héxadécimal.

            J'ai expliqué le principe de poids dans un poste quasi similaire..
            http://www.siteduzero.com/forum-83-129540-p1-help-systeme-binaire-et-hexadecimale.html
            • Partager sur Facebook
            • Partager sur Twitter
              28 mars 2007 à 22:24:30

              Déjà, à la base, l'ordinateur n'a jamais besoin de convertir de l'hexa en binaire. Comme tu l'as fait remarquer, il voit tout en binaire, et on lui donne à manger que du binaire ! Souvent à la place du binaire NOUS on NOTE hexadécimal, parce que c'est beaucoup plus compact, ça prend 4 fois moins de place ! Et c'est aussi plus clair. Et pourquoi on note en héxadécimal, parce que passer de la base 2 à la base 16 (et inversement) c'est très très facile, à tel point que ça s'apparente plus, donc, à un changement de notation qu'à une vraie conversion. Comme l'a dit Mansuz, il suffit de faire des paquets de 4 bits, puisque sur 4 bits en binaire on peut coder des nombres de 0 à 15, la même chose qu'on peut coder sur un digit en base 16. Ça marche parce que 16 c'est une puissance de 2, c'est 2^4. De la même façon, une autre base qui était assez utilisée en informatique mais qui ne l'est plus trop aujourd'hui c'est l'octal, la base huit, parce que 8=2^3, donc au lieu de faire des paquets de 4 on fait des paquets de 3.
              Si on utilisait une autre base comme, par exemple, 17, alors il faudrait faire de vraies conversions entre le binaire et l'heptadecimal, et ça ne ressemblerait plus du tout au binaire, et donc ça serait chiant et ça servirait à rien.

              Après bien sûr à un plus haut niveau tu peux demander à ton ordi de convertir de l'hexadécimal en binaire, et toutes autres bases comme tu veux parce que pour faire ça suffit de faire des multiplications, des additions et des divisions, ce que l'ordi sait faire. Et tu peux aussi le faire à la main. J'ai la flemme de raconter comment, mais si ça t'intéresse ça se trouve sûrement sur le net ^^
              • Partager sur Facebook
              • Partager sur Twitter
                29 mars 2007 à 0:26:11

                J'ajouterais que lorsque tu tappe "F4C2" dans un programme, c'est du texte. dans la mémoire du PC, y'a pas soudain un "F4C2" qui apparait, mais une suite binaire du style

                01000110 00110100 01000011 00110010

                Si après le programme souhaite voir ce que "représente" cette donnée, il utilise un petit algo de conversion tout simple. En C++, ca donnerait:

                #include <iostream>

                using namespace std;

                int main(int argc, char* argv[])
                {
                    char * data = "F4C2";
                    int nbr = 0;
                   
                    for (int i=3, pow16=1;i>=0;i--,pow16*=16){
                        if (data[i] < 'A') nbr += (data[i] - '0') * pow16;
                        else nbr += (data[i] - 'A' + 10) * pow16;
                    }

                    cout << data << endl << nbr;

                    return 0;
                }
                • Partager sur Facebook
                • Partager sur Twitter
                  29 mars 2007 à 2:18:13

                  Citation : Mansuz

                  Tu le décompose en 2 parties de 4.

                  0100
                  8421 >poids tout est à 0 sauf pour le poid 4 qui est a 1 donc on a 4.

                  1111 en binaire
                  8421
                  Pour celui ci tout est à 1 donc 8+4+2+1=15 15 en décimal équivaut à F en héxadécimal.

                  J'ai expliqué le principe de poids dans un poste quasi similaire..
                  http://www.siteduzero.com/forum-83-129540-p1-help-systeme-binaire-et-hexadecimale.html

                  Vous allez me trouver stupide mais j'ai un peu de la difficulté à comprendre le fonctionnement! Je sais pas si c'est parce que si c'est la façon dont je l'interprète, mais bon.

                  0100
                  8421

                  Premièrement: On peut pas avoir d'autre chiffre autre que un! Que valent c'est données?

                  Deuxièmement:
                  poids tout est à 0 sauf pour le poid 4 qui est a 1 donc on a 4.
                  Le principe de ce fonctionnement est les 0 valent 0 et les 1 valent 4?

                  Juste pour voi si j'ai saisi:

                  0:0 1:1 2:2 ... 9:9 10:a 11:b 12:c 13:d 14:e 15:f

                  Donc si je tape:

                  2f> 2+15(en base 10) mais l'ordi le voit en base 2:
                  2f> 0010 + 1111 ?

                  De plus, c'est quoi le poids? Le nombre obtenu divisé succescivement par 10? On garde que les restes?

                  Si c'est ça, comment l'ordi voit le f comment 15?

                  J'aimerais avoir des précisions, merci!




                  • Partager sur Facebook
                  • Partager sur Twitter
                    29 mars 2007 à 15:11:41

                    T'as lu mon post? J'ai expliqué que lorsque tu tape quelquechose dans un programme, c'est du texte.

                    En gros, lorsque tu appuie sur une touche, ton clavier envoie au processeur un message en disant, "Touche xxx pressée". Chaque touche a une valeur. Par exemple, on peut avoir 'A' qui vaut 65. Donc lorsque tu appuie sur 'A', ton clavier envoie EN BINAIRE le nombre 65 au processeur.

                    Ensuite, le programme peut récupérer cette valeur et en faire ce qu'il veut. Par exemple l'afficher sur l'écran, on le convertir en nombre.

                    -----------------------

                    Pour le poids:
                    Si on est en base 10, c'est à dire la base humaine la plus courante actuellement, le poids d'un chiffre c'est sa puissance xème de 10:

                    2563:

                    2 à un poids de 1000, puisqu'il est en rang 4, donc 10^(4-1)
                    5 à un poids de 100, puisqu'il est en rang 3, donc 10^(3-1)
                    6 à un poids de 10, puisqu'il est en rang 2, donc 10^(2-1)
                    3 à un poids de 1, puisqu'il est en rang 1, donc 10^(1-1)

                    En binaire, c'est pareil, mais avec une base 2, donc des puissances de 2:

                    1101:

                    = (1 * 2^0) + (0 * 2^1) + (1 * 2^2) + (1 * 2^3)
                    = 1*1 + 0*2+ 1*4 + 1*8
                    = 1 + 0 + 4 + 8
                    = 13

                    ------------------------------

                    Et pour l'ordi, il n'y a QUE des 1 et 0. Puisque il utilise du courant électrique pour transmettre et traiter les donnée, et que les composants principaux (transistors) n'ont que deux états: ouverts et fermés. On peut donc gérer deux tensions différents, donc deux valeurs. Ce qui fait que c'est donc du binaire.

                    ^^
                    • Partager sur Facebook
                    • Partager sur Twitter
                      29 mars 2007 à 21:01:17

                      Merci beaucoup!

                      Là je comprends mieux!

                      Entre mon dernier post et là, j'avais cherché et j'avais trouvé mais j'avais pas eu le temps de passer en résolu!


                      Bye et merci à tous!
                      • Partager sur Facebook
                      • Partager sur Twitter
                        30 mars 2007 à 20:33:45

                        ha tant qu'a fair eon va réctifier 2 truc.

                        Citation : DHKold


                        J'ajouterais que lorsque tu tappe "F4C2" dans un programme, c'est du texte. dans la mémoire du PC, y'a pas soudain un "F4C2" qui apparait, mais une suite binaire du style

                        01000110 00110100 01000011 00110010



                        Ceci est de l'ASCII pour les processeurs hors des IBM

                        Citation : DHKold


                        Si après le programme souhaite voir ce que "représente" cette donnée, il utilise un petit algo de conversion tout simple. En C++, ca donnerait:



                        Le langage machine est l'Assembleur. Voilivoilou
                        • Partager sur Facebook
                        • Partager sur Twitter
                          30 mars 2007 à 21:12:29

                          Citation : Taediosus

                          ha tant qu'a fair eon va réctifier 2 truc.

                          Citation : DHKold


                          J'ajouterais que lorsque tu tappe "F4C2" dans un programme, c'est du texte. dans la mémoire du PC, y'a pas soudain un "F4C2" qui apparait, mais une suite binaire du style

                          01000110 00110100 01000011 00110010



                          Ceci est de l'ASCII pour les processeurs hors des IBM


                          et l'ascii n'est qu'un encodage particulier... IBM est loin d'être le seul à ne pas avoir de prédiclection pour l'ascii...

                          Citation : Taediosus

                          Citation : DHKold


                          Si après le programme souhaite voir ce que "représente" cette donnée, il utilise un petit algo de conversion tout simple. En C++, ca donnerait:



                          Le langage machine est l'Assembleur. Voilivoilou

                          D'abord ca n'a rien à voir avec la question, et puis c'est faux. le langage machine, c'est le langage machine, ou binaire.

                          L'assembleur, c'est un langage de mnémoniques de très bas niveau, != langage machine qui n'a pas besoin d'être compilé.
                          • Partager sur Facebook
                          • Partager sur Twitter

                          [HEXADÉCIMAL -> Binaire]Comment?

                          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                          • Editeur
                          • Markdown