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

  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...

  8. #8
    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
    je travaille sur du javacard, donc pas de string ni de long, que du int et du byte.

  9. #9
    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
    Citation Envoyé par cyscek Voir le message
    J'ajout que je ne comprend pas d'où sorte les valeurs dans ton exemple, les 5,7,9 etc...
    C'est la (position-1) des 1 dans le nombre 10^5 = 11000011010100000
    Explique moi pourquoi tu veux concaténer 12345 et 12345, en en quoi t'a besoin du binaire!!?

  10. #10
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Puisque tu ne possèdes que les types int et byte, dans quelle structure vas-tu ranger la suite binaire ? Elle sera écrite sous quelle forme ? Une suite de 0 et de 1 dans un tableau ?
    Je ne comprends pas du tout ou tu veux en venir.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  11. #11
    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
    Je reviens vers vous pour confirmer que j'ai réussi

    J'ai finalement compris ce que tu voulais dire hibour, j'ai fais plusieurs exemples puis monter un algo autour.

    Pour être moins vague, je n'ai accès qu'aux int, byte et aux tableaux de ces types.

    Je dois faire des opérations cryptographiques à partir de mes deux entiers, sauf que l'ancienne version le faisait avec un long, et vu que là c'est interdit... Du coup là je passe tout en binaire et j'ai fait comme indiqué, je remplis un tableau et je me débrouille avec la valeur binaire de mon "long" reconstitué .

  12. #12
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2006
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 245
    Par défaut
    Bonjour, ce que je n'arrive pas a comprendre c'est pourquoi tu veux absolument passer par des int tu pourrais faire toutes tes manipulations uniquement avec ton tableau de byte. Y a t il une raison précise pour cela?

Discussions similaires

  1. Réponses: 11
    Dernier message: 29/11/2005, 17h01
  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, 16h07
  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, 18h37
  4. [Transtypage] Long en int
    Par Bugmaster dans le forum Langage
    Réponses: 2
    Dernier message: 20/09/2004, 10h05
  5. Réponses: 5
    Dernier message: 16/07/2004, 00h28

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