Partage
  • Partager sur Facebook
  • Partager sur Twitter

Variables codées sur X bits

    8 mars 2008 à 21:41:33

    Bonsoir, je souhaiterais savoir s'il est possible de déclarer une variable codée sur un certain nombre de bits (c'est-à-dire utiliser un autre type que int,char,float,short,long,double,...).
    Merci d'avance pour vos réponses.
    • Partager sur Facebook
    • Partager sur Twitter
      8 mars 2008 à 21:53:36

      Si tu souhaites travailler sur moins de bit qu'un int, tu peux uiliser les champs de bits. Pour faire simple:
      Dans une structure:
      1. struct untel{
      2.    int a:4; //a tiendra sur 4 bits
      3.    int b:28; // 28 bits
      4. };


      Je n'entre pas dans les détails, tu peux aller chercher.

      Si tu souhaites faire plus, à toi d'émuler de tels type, et donc de recoder les additions etc..
      • Partager sur Facebook
      • Partager sur Twitter
        8 mars 2008 à 22:46:25

        Pourquoi as-tu besoin d'un type de variable qui autorise un nombre de bits précis?

        Kurapix
        • Partager sur Facebook
        • Partager sur Twitter
          8 mars 2008 à 22:51:54

          Parce que je veux faire une matrice pour un jeu 2D et j'essaie de faire le plus léger possible (et chaque case a une valeur comprise entre 0 et 7 donc 3 bits me suffisent et ça sera plus léger qu'un char qui prend déjà 8 bits !);
          • Partager sur Facebook
          • Partager sur Twitter
            8 mars 2008 à 23:58:57

            ... aucun intérêt sur les machines actuelles ...
            Ce genre d'optimisation s'applique uniquement sur des machines avec TRES peu de mémoire (comme dans l'embarqué).

            Tu vas surement optimiser du côté de la mémoire mais pas du côté de la vitesse d'exécution ...
            Tu ne peux pas optimiser les 2 en même temps (... ça peut arriver mais c'est rare ...).
            Ce que tu vas faire avec les champs de bits c'est créer des données empaquetés (packed data en Anglais), pour exploiter ces données, il faudra effectuer des opérations supplémentaires (en C c'est transparent).
            Au niveau de processeur pour manipuler des bits unique on utilise des masques : ET, OU, XOR, ... ce qui implique des opérations supplémentaires.

            Kurapix
            • Partager sur Facebook
            • Partager sur Twitter
              9 mars 2008 à 4:08:31

              Citation : aleksab

              (et chaque case a une valeur comprise entre 0 et 7 donc 3 bits me suffisent et ça sera plus léger qu'un char qui prend déjà 8 bits !);


              pour compléter Kurapix, un ordi ne sait manipuler que des octets, même si tu "crées" un champ de bit de 3bits, au final il prendra quand même 8bits.
              • Partager sur Facebook
              • Partager sur Twitter
                9 mars 2008 à 17:18:04

                C'est bien ce que je pensais...
                Effectivement, vu que mon tableau ne prendra que quelques octets je vais laisser tomber pour privilégier la vitesse d'exécution.
                • Partager sur Facebook
                • Partager sur Twitter

                Variables codées sur X bits

                × 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