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

Java Discussion :

Calcul sur les bytes


Sujet :

Java

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2009
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Octobre 2009
    Messages : 169
    Points : 100
    Points
    100
    Par défaut Calcul sur les bytes
    Bonjour,

    Je viens de tomber sur un code assez intéressant que je vous livre ici.
    Je ne comprends pas cette notation. Pourriez-vous m'éclairer ?
    D'avance merci de votre aide.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    byte result;
    byte isVisible = new Byte("1") ;
    byte isAllowToModify = new Byte("2") ;
    byte isAllowToDelete = new Byte("0") ;
     
    result = isVisible ;
    result <<= 2;
    result |= isAllowToModify ;
    result <<= 2;
    result |= isAllowToDelete ;

  2. #2
    Membre chevronné
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Points : 1 984
    Points
    1 984
    Par défaut
    J'imagine que c'est "result <<= 2;" que tu ne comprends pas. Il s'agit d'un decalage binaire vers la gauche de 2 rangs.

    Par exemple, si b=4, en binaire, ca fait 0b00000100
    Donc si on decale de 2 bits vers la gauche => 0b00010000, ce qui fait 16.

    En fait, décaler de 1 bit vers la gauche revient a multiplier par 2 et decaler de 1 bit vers la droite revient a diviser par 2.
    Donc decaler de 2 bits vers la gauche revient à multiplier par 4.


    Et l'idée générale de ton code est de faire un tableau de bits. Ca se fait souvent pour des propriétés qui peuvent se cumuler. Par exemple, on pourrait imaginer créer un composant qui possède 2 propriétés :
    - actif
    - visible

    Pour optimiser le stockage, on va stocker dans un meme byte l'information.
    Le bit de poids faible représentera visible et le bit suivant actif. Ainsi, si byte = 0 => actif = 0 et visible = 0.
    Si byte = 1 => actif = 0 et visible = 1.
    Si byte = 2 => actif = 1 et visible = 0.
    Si byte = 3 => actif = 1 et visible = 1.

    Ensuite, on peut manipuler byte avec des operateurs binaires pour determinier si le composant est visible ou actif.
    Dans certains cas, c'est adapté.

    Ceci dit, pour revenir à ton code, visiblement, c'est bizarre parce que isAllowToDelete = 0, vu qu'on fait des ou binaires apres, ca ne sert a rien. Mais bon, l'esprit est la...

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2009
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Octobre 2009
    Messages : 169
    Points : 100
    Points
    100
    Par défaut
    Merci pour cette réponse précise. Je comprends mieux.
    Pour répondre à ton questionnement les assignations sont pour l'exemple.
    En effet, le traitement est exécuté à plus grande échelle avec récupération en base de données.
    Merci encore pour ta réponse.
    Cordialement,

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

Discussions similaires

  1. Calcul sur les heures
    Par franfr57 dans le forum Langage
    Réponses: 5
    Dernier message: 20/04/2006, 17h56
  2. [Dates] Calcul sur les dates...
    Par gawelldanor dans le forum Langage
    Réponses: 10
    Dernier message: 04/04/2006, 11h07
  3. Réponses: 12
    Dernier message: 31/03/2006, 20h02
  4. [Math]probleme de precision de calcul sur les float
    Par calvin dans le forum Langage
    Réponses: 6
    Dernier message: 26/05/2005, 07h53
  5. [C#] Calcul sur les dates avec des DateTimePicker
    Par alizee971 dans le forum Windows Forms
    Réponses: 10
    Dernier message: 02/04/2005, 17h14

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