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 :

Opérateurs multiplication/division binaire Java


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert

    Avatar de Songbird
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Juin 2015
    Messages
    494
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2015
    Messages : 494
    Billets dans le blog
    8
    Par défaut Opérateurs multiplication/division binaire Java
    Bonjour,

    Je souhaiterais multiplier et diviser des entiers par leur équivalent binaire.

    Rien de plus simple quand le diviseur est une puissance de 2:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    10 >> 3 == 1 | 1010/1000 == 0001
    Mais maintenant admettons que le diviseur n'est pas une puissance de 2, du style 9.

    Comment suis-je censé faire, sachant que cet opérateur ne permet que le décalage des bits déjà présents, mais pas d'en rajouter par la suite ? (1001)

    Je vous remercie d'avance pour votre réponse,

    Cordialement,

    Songbird.

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Pas compris. C'est quoi la finalité de la chose ?

    Qu'est-ce qui justifie de ne pas faire une division parfaitement normale ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre Expert

    Avatar de Songbird
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Juin 2015
    Messages
    494
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2015
    Messages : 494
    Billets dans le blog
    8
    Par défaut
    Citation Envoyé par thelvin Voir le message
    Pas compris. C'est quoi la finalité de la chose ?

    Qu'est-ce qui justifie de ne pas faire une division parfaitement normale ?
    Rien. Je pose juste une question pour connaître une 'autre' façon de diviser. ^^


    Salut,

    La notion de binaire est une notion de représentation et la notion d'entier de type, donc d'ensemble de valeurs : il n'y a donc pas à tortiller n / m, que m, ou n, soit représenté en binaire, en octal, en sexagésimal, en chiffres romains ou mayas, ou en dada ourka, c'est n / m.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part

    System.out.println( (1310 / 131) + "=" + (1310 / 0b10000011) );

    Idem pour la multiplication.
    Sauf que là, je ne parle pas de la division basique.

    Je parle bien de cet opérateur '>>' qui prend en premier paramètre le nombre à diviser et ensuite le nombre de fois qu'on décale les bits du nombre.

    Dans mon premier exemple 3 = 2^3 = 8.

    Ma question est donc la suivante: Comment effectuer une division de ce genre avec un nombre qui n'est pas une puissance de 2 ? (9, pas exemple)

    Si ma question est trop farfelue, c'est pas grave, ce n'est que de la curiosité.

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Ma foi, tu peux commencer par réécrire le nombre sous une autre base, dont le diviseur est une puissance. Par exemple pour 9, c'est une puissance de 3, donc tu pourrais réécrire le nombre à diviser en base 3.
    Ensuite, déterminer quelle puissance de la base est ton diviseur. Pour 9, c'est 3 puissance 2. Ce qui veut dire un décalage de deux chiffres en base 3.
    Enfin, faire ce décalage en enlevant des chiffres à droite.

    Évidemment, il est difficile d'imaginer plus inefficace.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre Expert

    Avatar de Songbird
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Juin 2015
    Messages
    494
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2015
    Messages : 494
    Billets dans le blog
    8
    Par défaut
    Citation Envoyé par thelvin Voir le message
    Ma foi, tu peux commencer par réécrire le nombre sous une autre base, dont le diviseur est une puissance. Par exemple pour 9, c'est une puissance de 3, donc tu pourrais réécrire le nombre à diviser en base 3.
    Ensuite, déterminer quelle puissance de la base est ton diviseur. Pour 9, c'est 3 puissance 2. Ce qui veut dire un décalage de deux chiffres en base 3.
    Enfin, faire ce décalage en enlevant des chiffres à droite.

    Évidemment, il est difficile d'imaginer plus inefficace.
    D'accord, merci.
    Oui donc ce genre d'opérations n'est bon que pour les entiers, et à condition que ces derniers soient des multiples de 2.

    J'ai lu que ces opérations étaient plus rapides qu'une division normale, mais ne pouvant être utilisées dans si peu de cas elles en deviennent presque inutiles, visiblement.


    Merci pour vos réponses !

  6. #6
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Salut,

    La notion de binaire est une notion de représentation et la notion d'entier de type, donc d'ensemble de valeurs : il n'y a donc pas à tortiller n / m, que m, ou n, soit représenté en binaire, en octal, en sexagésimal, en chiffres romains ou mayas, ou en dada ourka, c'est n / m.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println( (1310 / 131) + "=" + (1310 / 0b10000011) );
    Idem pour la multiplication.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

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

Discussions similaires

  1. ordre multiplication division
    Par lasrevinu dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 23/05/2010, 20h13
  2. Opérateur Anti-division " \ " (backslash)
    Par Salendar dans le forum MATLAB
    Réponses: 9
    Dernier message: 12/05/2009, 11h58
  3. Package listings et opérateur multiplication *
    Par jguillot dans le forum Mise en forme
    Réponses: 2
    Dernier message: 27/06/2007, 09h51
  4. opérateur de division pour retour du résultat sous forme entière
    Par maroco31 informatik dans le forum Langage
    Réponses: 2
    Dernier message: 31/05/2007, 16h18
  5. [langage] opérateur d'affectation binaires
    Par biglebowski13 dans le forum Langage
    Réponses: 6
    Dernier message: 21/11/2006, 09h51

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