Précédent   Forum du club des développeurs et IT Pro > Autres langages > Autres langages > Ruby
Ruby Le forum sur la programmation Ruby. Voir aussi la FAQ Ruby et les cours Ruby.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 06/08/2007, 00h28   #1
tsing
Membre du Club
 
Inscription : octobre 2004
Messages : 114
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 114
Points : 40
Points : 40
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
tsing est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/08/2007, 09h35   #2
titoumimi
Expert Confirmé Sénior
 
Avatar de titoumimi
 
Inscription : décembre 2003
Messages : 3 716
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : décembre 2003
Messages : 3 716
Points : 6 016
Points : 6 016
en Ruby, un nombre binaire se présente comme suit :

Citation:
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 !
_______________________________________________________________________
La rubrique Ruby / Rails recrute. Contactez moi !
_______________________________________________________________________
Cours Ruby et Ruby on Rails (RoR) - FAQ Ruby / Rails - Livres Ruby / Rails
Ajax facile avec Ruby on Rails, Prototype, script.aculo.us et les RJS
Tutoriaux HTML/CSS et PHP
titoumimi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/08/2007, 09h46   #3
Côme
Membre actif
 
Inscription : septembre 2003
Messages : 172
Détails du profil
Informations forums :
Inscription : septembre 2003
Messages : 172
Points : 188
Points : 188
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
Côme est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/08/2007, 15h28   #4
tsing
Membre du Club
 
Inscription : octobre 2004
Messages : 114
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 114
Points : 40
Points : 40
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 :
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.
tsing est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/08/2007, 15h45   #5
titoumimi
Expert Confirmé Sénior
 
Avatar de titoumimi
 
Inscription : décembre 2003
Messages : 3 716
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : décembre 2003
Messages : 3 716
Points : 6 016
Points : 6 016
faut savoir...

Code :
a = 10 # c'est de la base 10 pour Ruby ça...
pour obtenir l'équivalent d'un .hex avec des nombres binaires :

Code :
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 !
_______________________________________________________________________
La rubrique Ruby / Rails recrute. Contactez moi !
_______________________________________________________________________
Cours Ruby et Ruby on Rails (RoR) - FAQ Ruby / Rails - Livres Ruby / Rails
Ajax facile avec Ruby on Rails, Prototype, script.aculo.us et les RJS
Tutoriaux HTML/CSS et PHP
titoumimi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/08/2007, 16h05   #6
tsing
Membre du Club
 
Inscription : octobre 2004
Messages : 114
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 114
Points : 40
Points : 40
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.
tsing est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 04h00.


 
 
 
 
Partenaires

Hébergement Web