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

Ada Discussion :

Conversion décimal à binaire


Sujet :

Ada

  1. #1
    Invité
    Invité(e)
    Par défaut Conversion décimal à binaire
    Bonjour,
    J'ai écrit récemment un fonction pour convertir un décimal en hexadécimal.
    Je pensais utiliser la même technique pour convertir un décimal en binaire, mais ça n'a pas l'air de le faire.

    Voici ma fonction

    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
     
    function To_bbyte(The_Byte : in byte) return T_Byte is
          Last : Positive := 8;
          Value : integer := Integer(The_Byte);
          Bbyte : T_Byte := (others => False);
          Rest : Integer;
       begin
          loop
             Rest := (value rem 2);
             Bbyte(Last) := boolean'Val(Rest);
             value := value - rest;
             Last := Last - 1;
             exit when (value rem 2) = 0;
          end loop;
          Bbyte(Last) := boolean'Val(value/2);
          return Bbyte;
       end To_Bbyte;
    Pardon, je suis un peu crevé.

  2. #2
    Membre habitué
    Inscrit en
    Décembre 2004
    Messages
    119
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 119
    Points : 156
    Points
    156
    Par défaut
    Avec les types Byte et T_Byte définis comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
       type Byte is mod 256;
       type T_Byte is array (1 .. 8) of Boolean;
    Je coderai ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
       function To_Bbyte(Value : in Byte) return T_Byte is
          Bbyte : T_Byte;
          Tmp   : Byte   := Value;
       begin
          for I in reverse Bbyte'Range loop
             Bbyte (I) := Boolean'Val (Tmp rem 2);
             Tmp := Tmp / 2;
          end loop;      
          return Bbyte;
       end To_Bbyte;

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour jc-miranda, merci pour ta réponse.
    J'avais fait ceci entre temps :
    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
     
    function To_bbyte(The_Byte : in byte) return T_Byte is
          Last : Positive := 8;
          Value : integer := Integer(The_Byte);
          Bbyte : T_Byte := (others => False);
          Rest : Integer;
       begin
          loop
             rest := (value rem 2);
             value := (Value/2);
             Bbyte(Last) := boolean'Val(Rest);
             exit when Value = 0;
             Last := Last - 1;
          end loop;
          return Bbyte;
       end To_Bbyte;
    3 lignes de plus.

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

Discussions similaires

  1. Conversion Décimal à binaire
    Par spitou_77 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/12/2011, 08h04
  2. Conversion décimal-binaire ?
    Par fomazou dans le forum MATLAB
    Réponses: 3
    Dernier message: 22/01/2009, 10h15
  3. Réponses: 3
    Dernier message: 28/12/2006, 15h06
  4. Conversion Décimal -> Binaire
    Par Z-Vegeta dans le forum Pascal
    Réponses: 2
    Dernier message: 22/12/2006, 23h10
  5. Algo Conversion Décimal -> Binaire
    Par MisterTee dans le forum Algorithmes et structures de données
    Réponses: 12
    Dernier message: 23/02/2006, 22h53

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