Partage
  • Partager sur Facebook
  • Partager sur Twitter

Pourquoi utiliser l'hexa dans des programmes C

    18 décembre 2015 à 14:43:17

    Bonjour,

    Un peu comme le dit le titre je me demande pourquoi généralement les développeurs utilise l'hexa ?

    Nirv

    • Partager sur Facebook
    • Partager sur Twitter
      18 décembre 2015 à 15:47:49

      Bah.. ça dépend surtout de ce que le développeur fais.

      Pour un exemple simple, prenons quelqu'un qui change les couleurs de son programme.

      Si il veut être précis dans les couleur, il va utiliser une notation RGB (255,255,255 pour le blanc).

      Alors que si c'est pas trop important, utiliser l'hexa est plus rapide : #FFFFFF pour le blanc.

      • Partager sur Facebook
      • Partager sur Twitter
        18 décembre 2015 à 18:26:54

        "Si il veut être précis dans les couleur, il va utiliser une notation RGB (255,255,255 pour le blanc).
        Alors que si c'est pas trop important, utiliser l'hexa est plus rapide : #FFFFFF pour le blanc."
        Pour être franc avec toi je vois pas d'où vient cette histoire de précision, 0xFF = 255. En hexadécimal tu peux exprimer la même chose qu'avec des entiers, mais avec un charset différent.
        En général dans la vie de tous les jours on utilise la base 10 (tes chiffres 0, 1, 2, etc..., 9), par contre en informatique on préfère représenter parfois (ça dépend des personnes) certaines données en hexadécimal (donc en base 16).
        La base 2 correspond au binaire (0 et 1), le problème c'est que c'est pas super parlant pour les gens, du coup on a crée des bases supérieures qui permettent de représenter plusieurs bits d'un coup, on a notamment l'octal, qui permet de représenter 3 bits (2^3=8, df'ou l'octal), et l'hexadécimal, qui permet d'en représenter 4 (2^4 = 16, d'ou la base 16). La base 10 elle ne permet pas de représenter des données binaires directement (la raison c'est que 2^n = 10 n'a pas de solution entière).
        • Partager sur Facebook
        • Partager sur Twitter
        MysteryDash / 100 MPM / Développeur Freelance C#.NET / osu! / PS4 Offline Remote Play
          18 décembre 2015 à 19:19:41

          je n'avais pas préciser, je parlais pour les déclarations de variable en C genre:

          #define KEYLEN 0x7f

          Mais d'après ce que je comprend cela dépend surtout de notre façon de développer ?

          • Partager sur Facebook
          • Partager sur Twitter
            19 décembre 2015 à 3:26:28

            Salut, Dans ton exemple je ne vois pas trop pourquoi c'est en hexa, apparemment c'est sensé être une taille de clef vu la valeur.

            Ce qu'a dis @MysteryDash est tout à fait juste sur la notion des bases 10 (décimal, comptage normal dans la vie de tous les jours), 16 (hexa), 2(binaire). Normalement, ce n'est pas sensé être une lubie de certain programmeurs, je vais te donner un exemple très concret:

            Quand tu fais ce que l'on appelle de la programmation embarqué, donc à savoir, programmer sur des (petits) processeurs ou tu as parfaitement le controle des entrées/sorties de ton processeur (ou pin, ce sont les picots que l'on voit sur un cpu). Les entrées/sorties peuvent par exemple te servir à allumer une lampe ou lire les touches appuyé d'un clavier. Malheureusement, tu es très proche de la machine dans ces cas ci et tu as donc besoin de configurer ton processeur, les docs qui sont fournie par le constructeurs te demandes de changer l'état de certaines entrées sortie pour activer/désactiver les fonctionnalité, les états sont donc en binaire (0=courant passe pas, 1=courant passe). Tu dois donc faire ça dans ton code mais écrire avec des 0 et des 1 comme valeurs ça prends de la place et c'est pas hyper lisible c'est là que l'hexa vient en aide car il est très facile de passer du binaire (en paquet de 4) à de l'hexa et inversement. A contrario, passer du décimal (base 10) à du binaire qui dépasse les 4 bits ou de l'hexa qui a 2 chiffres ou plus et vice versa c'est pas instantanée et ça même avec de l'entrainement.

            quand je vois dans ton exemple 7F je peux direct dire que je vais avoir 8 bits (soit 1 octet) et je peux visualiser directement le binaire associer pour savoir quelle entrées sorties j'ai activé ou non.

            Pour voir comment on visualise:

            • il faut prendre chaque chiffre de l'hexa un par un
            • savoir passer d'un chiffre en hexa a un paquet de 4 bits

            exemple avec 7F:

            je prends d'abord 7 et 7 en décimal bin c'est 7 :p, voyons comment le traduire en binaire

            numéro du bit............. | 4 | 3 | 2 | 1 | valeur décimal du bit.. | 8 | 4 | 2 | 1 | valeur de 7 en binaire. | 0 | 1 | 1 | 1 |

            comment on trouve 0111 ? et bien c'est simple il faut que j'obtienne 7 en mettant des bits à 1, pour obtenir 7 sur mon tableau je dois additionner 4+2+1, et donc mettre les bits correspondant à ces valeurs à 1.

            On prend maintenant F, celui ci est plus direct. Si je met tout mes bits à 1 et donc avoir 1111 pour passer en décimal je dois donc additionner 8+4+2+1 ce qui donne 15 OR F en hexa c'est 15 en décimal je sais donc directement quand je vois F que tous les bits sont à 1. Cela nous donne au final pour 7F = 0111 1111

            Si je veux mettre 7F en décimal ça nous donne 127 ce qui est bien moins parlant pour visualiser des 0 et des 1 (ou plutot du courant qui passe ou qui passe pas sur des pins)...

            j'espère ne pas t'avoir trop perdu :S

            -
            Edité par timoun 19 décembre 2015 à 3:31:09

            • Partager sur Facebook
            • Partager sur Twitter
              19 décembre 2015 à 14:33:18

              Merci timoun pour ton explication très détailler.

              Donc 7F est égal a 0111 1111 cela veut dire qu'une entrée de mon proc a pour valeur 0 puis 1,1.... ?

              Ou que j'ai 8 entré et que la première est a 0 et les autres son a 1 ?

              la valeurs envoyer a l'entré est 0111 1111 pour une seul entrée ?

              Si tu a un petit lien pour un tuto sur la programmation microproc je suis preneur ;)

              Nirv

              • Partager sur Facebook
              • Partager sur Twitter

              Pourquoi utiliser l'hexa dans des programmes C

              × 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