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

Ruby Discussion :

Additionner 2 nombres binaires


Sujet :

Ruby

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 114
    Points : 73
    Points
    73
    Par défaut Additionner 2 nombres binaires
    Rebonjour,

    J'ai encore une seconde et dernière question à poser pour la soirée

    Comment peut-on additionner 2 nombres binaires en ruby ?
    Après avoir fait plusieurs tentatives, lorsque j'écris quelque chose comme ça : 1001 + 1101, ruby prend mes valeur pour des nombres décimaux et rien ne fonctionne.

    Merci à vous

  2. #2
    Expert éminent
    Avatar de titoumimi
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    3 707
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 707
    Points : 7 285
    Points
    7 285
    Par défaut
    en Ruby, un nombre binaire se présente comme suit :

    0b1001
    =>9

    0b1001 + 0b1101
    =>22

    22.to_s(2)
    =>"10110"
    en espérant que ça t'aide

    PB
    Globalement inoffensif
    Merci de respecter les règles du forum.
    Aucune question technique par MP !
    _______________________________________________________________________
    Cours Ruby et Ruby on Rails (RoR) - Cours PHP - FAQ Ruby / Rails - Livres Ruby / Rails
    Ajax facile avec Ruby on Rails, Prototype, script.aculo.us et les RJS
    Tutoriaux HTML/CSS et PHP

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 172
    Points : 219
    Points
    219
    Par défaut 0b1001 + 0b1101
    Bonjour,

    Pour écrire un binaire en Ruby, il faut ajouter "0b" en tête du nombre :

    >> 0b1001 + 0b1101
    => 22

    Par défaut, les nombres s'affichent en décimal. Si on veut un résultat en base 2, il faut le convertir en chaine:

    >> (0b1001 + 0b1101).to_s(2)
    => "10110"
    >>

    Côme

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 114
    Points : 73
    Points
    73
    Par défaut
    Merci pour votre réponse. Cette écriture me fait penser au temps de la TI89... qui est toujours d'actualité, d'ailleur.

    Cependant, j'avoue que je n'arrive toujours pas à régler mon problème. Je m'explique :

    Pour que Ruby interprète un nombre comme étant en base binaire, je dois lui ajouter "0b". Mais pour cela, il faut que je convertisse le nombre initial en une chaîne de caractères. Ainsi, je peux écrire ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    number1 = 10
    number2 = 11
     
    new_number1 = ( "0b" + number1.to_s )
    new_number2 = ( "0b" + number2.to_s )
     
    result = new_number1 + new_number2
    Mais dès lors, Ruby prend mes nombres comme du texte (ce qui est normal) et le 0b n'est pas interprété. J'ajoute donc la méthode .to_i afin de les convertir en nombre... et là, Ruby ne comprend plus rien et donc il génère un 0.

    D'où mon problème.

    A l'inverse, pour que Ruby comprenne qu'un nombre est hexadécimal (par exemple), il me suffit de lui ajouter la méthode .hex... mais la méthode .bin n'existe pas à priori.

  5. #5
    Expert éminent
    Avatar de titoumimi
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    3 707
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 707
    Points : 7 285
    Points
    7 285
    Par défaut
    faut savoir...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    a = 10 # c'est de la base 10 pour Ruby ça...
    pour obtenir l'équivalent d'un .hex avec des nombres binaires :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    a = "0b1001"
    => "0b001"
    a.to_i(2)
    => 9
    a = "1001"
    => "1001"
    a.to_i(2)
    => 9
    Globalement inoffensif
    Merci de respecter les règles du forum.
    Aucune question technique par MP !
    _______________________________________________________________________
    Cours Ruby et Ruby on Rails (RoR) - Cours PHP - FAQ Ruby / Rails - Livres Ruby / Rails
    Ajax facile avec Ruby on Rails, Prototype, script.aculo.us et les RJS
    Tutoriaux HTML/CSS et PHP

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 114
    Points : 73
    Points
    73
    Par défaut Ca marche !
    Merci titoumimi
    J'n'avais pas pensé à la méthode .to_i(2)... c'est bougrement intelligent

    Bonne fin de journée.

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

Discussions similaires

  1. [LG] Convertir un nombre binaire en décimal
    Par minela28x dans le forum Langage
    Réponses: 5
    Dernier message: 05/01/2006, 10h33
  2. Affichage d'un nombre binaire
    Par Jero13 dans le forum C
    Réponses: 5
    Dernier message: 05/12/2005, 22h17
  3. conversion nombre binaire -> decimal
    Par spoun95 dans le forum Langage
    Réponses: 7
    Dernier message: 25/11/2005, 17h46
  4. Réponses: 6
    Dernier message: 28/07/2005, 21h14

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