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

Langage Java Discussion :

Valeur binaire depuis long et int


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 78
    Par défaut Valeur binaire depuis long et int
    Bonjour à tous !

    J'ai un petit programme, ou je pars d'une string "1234512345" que je convertis en long. Jusque là, aucun problème, là dessus je peux découper mon long pour remplir un tableau avec la valeur binaire.

    "1234512345" -> 1234512345 -> 1001001100101010010100111011001

    Maintenant, je n'ai plus accès aux long ni aux string (structure style javacard, mais avec des int).

    Du coup là, je pars avec deux int : 12345 et 12345
    Sauf que forcément, quand je tranforme en binaire, ça ne colle plus:

    11000000111001 et 11000000111001

    Ma question est donc la suivante, en partant de mes 2 int, puis je trouver la valeur binaire de mon "long" que je ne peux pas instancier ?

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    338
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 338
    Par défaut
    On peut voir que
    1234512345 = 1234500000 + 12345 = 12345*10^5 + 12345
    on multiplie le nombre à gauche * 10 à la puissance au nombre de chiffre du nombre a droite.
    10^5 = (2^3+2)^5
    donc on prend
    12345 << 3 + 12345 <<1 = 12345 * 10^5
    on prend la représentation binaire du nombre a gauche on le décale de 3 + la même représentation binaire on la décale de 1 le tout en lui rajoute la représentation binaire de droite.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 78
    Par défaut
    Alors déjà, merci beaucoup pour la réponse rapide =)

    Maintenant, je suis un peu perdu dans l'explication (Je me perd toujours dans les binaires et tout ça ). Sachant que mes int seront toujours de taille 5 (pour la puissance, je comprend bien), je vais rester sur cet exemple.
    Seulement je ne comprend pas je pense les opérateurs << et >> . Ainsi, comment puis je l'appliquer à mes tableaux contenant la valeur binaire, pour former un seul tableau contenant tout ?

    tab1 = {1,1,0,0,0,0,0,0,1,1,1,0,0,1};

    tab2 = {1,1,0,0,0,0,0,0,1,1,1,0,0,1};

    idéalement obtenir :

    tab3 = {1,0,0,1,0,0,1,1,0,0,1,0,1,0,1,0,0,1,0,1,0,0,1,1,1,0,1,1,0,0,1};

    Je sais que c'est un peu fastidieux, mais pourrais je voir par l'exemple la manière de procéder ? Car je ne vois pas comment appliquer les <<.

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    338
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 338
    Par défaut
    << est l'opérateur de décalage à gauche qui équivaut à une multiplication par 2 à la puissance du nombre décalé. ex: 12 << 5 = 12* 2^5.
    Je me suis trompé tout à l'heure
    (a+b)^n != a^n + b^n
    multiplier par 10^5 = 11000011010100000 =
    2<<5 + 2<<7 + 2<<9 + 2<<10 + 2<<15 + 2<<16

    12345 << 5 = 11000000111001 << 5 = 1100000011100100000
    12345 << 7 = 11000000111001 << 7 = 110000001110010000000
    12345 << 9 = 11000000111001 << 9 = 11000000111001000000000
    .
    .
    .
    12345 << 16 = tu rajoute 16 zéro a gauche
    ---------------------------------------------------------
    Faire la somme de tous ça
    Je pense que cette solution est plus compliqué que je le pensais..

    Le mieux c'est à partir de tes 2 int tu fais ce que j'ai dis tout à l'heure :
    long resultat = 12345*10^5 + 12345
    Puis un Long.toBinaryString(resultat)

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 78
    Par défaut
    Justement, si je demande c'est que j'ai bien ce problème, de ne pouvoir utiliser ni de long, ni de string... Je n'ai que des int, des tableaux de int et des bytes à la limite... =/

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    338
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 338
    Par défaut
    Pourquoi t'a que ça??? tu travaille sur quoi exactement!!

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 78
    Par défaut
    J'ajout que je ne comprend pas d'où sorte les valeurs dans ton exemple, les 5,7,9 etc...

Discussions similaires

  1. Réponses: 11
    Dernier message: 29/11/2005, 16h01
  2. [WD9] Ecriture de valeur BINAIRE dans la base registre
    Par le y@m's dans le forum WinDev
    Réponses: 4
    Dernier message: 01/09/2005, 15h07
  3. Sélection d' une valeur max depuis 2 tables
    Par ipeteivince dans le forum Requêtes
    Réponses: 4
    Dernier message: 13/05/2005, 17h37
  4. [Transtypage] Long en int
    Par Bugmaster dans le forum Langage
    Réponses: 2
    Dernier message: 20/09/2004, 09h05
  5. Réponses: 5
    Dernier message: 15/07/2004, 23h28

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