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

Lazarus Pascal Discussion :

Décalage de bits sur integer


Sujet :

Lazarus Pascal

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 15
    Points : 13
    Points
    13
    Par défaut Décalage de bits sur integer
    Bonjour

    je rencontre un probleme avec les operations de bitwise dans lazarus sur des integer

    lorsque je fais
    j'obtiens bien 64. impec

    maintenant sur les nombres negatifs
    j'obtiens 1073741760

    le probleme n'existe pas sur un shortint ou un smallint

    Est ce un bug ?

  2. #2
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    Citation Envoyé par caku Voir le message
    Bonjour

    je rencontre un probleme avec les operations de bitwise dans lazarus sur des integer

    lorsque je fais
    j'obtiens bien 64. impec

    maintenant sur les nombres negatifs
    j'obtiens 1073741760

    le probleme n'existe pas sur un shortint ou un smallint

    Est ce un bug ?
    -256 c'est $FFFFFF00 ou encore
    11111111111111111111111100000000

    1073741760 c'est $3FFFFFC0 ou encore 00111111111111111111111111000000

    soit un décalage de 2 bits à droite...et perte du signe.

    tu peux utiliser "DIV 4" et espérer que le compilateur optimise l'opération
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 15
    Points : 13
    Points
    13
    Par défaut
    Je suis d'accord avec ton raisonnement
    mais pourquoi le signe est il perdu sur
    Integer
    longint
    int64
    et pas sur :
    smallint
    shortint

    il devrait etre perdu aussi sur smallint

    dans l'immediat je recupere le signe avant le bitwise et le restitue aprés

  4. #4
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    j'ai la réponse pour Delphi...qui doit être la même pour FP

    pour une variable de moins de 32 bits, Delphi utilise 'movsx eax,x' avant de faire un shr sur eax. Donc on a bien deux 0 qui entrent par la gauche, mais ils n'affectent pas ax (SmallInt) et al (ShortInt)
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 15
    Points : 13
    Points
    13
    Par défaut
    Merci pour ton explication

    C'est quand meme dommage de ne pas utiliser sar qui fait entrer a gauche les memes bits que le bit de poids fort

    On fera avec

    merci

  6. #6
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Hia,
    Citation Envoyé par caku Voir le message
    Merci pour ton explication

    C'est quand meme dommage de ne pas utiliser sar qui fait entrer a gauche les memes bits que le bit de poids fort

    On fera avec

    merci
    Oui, mais s'ils avaient voulu utiliser sar, ils n'auraient pas appelé l'opérateur shr !
    Si les cons volaient, il ferait nuit à midi.

Discussions similaires

  1. Décalage de bits
    Par Kraz dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 21/10/2006, 18h09
  2. Réponses: 2
    Dernier message: 27/02/2006, 09h40
  3. décalage de bits
    Par cedre22 dans le forum Langage
    Réponses: 13
    Dernier message: 17/01/2006, 09h33
  4. Multiplication par décalage de bits
    Par tekman54000 dans le forum Assembleur
    Réponses: 2
    Dernier message: 25/10/2005, 11h35
  5. Décalage de bit sur unsigned char [8]
    Par dboulange dans le forum C++
    Réponses: 14
    Dernier message: 26/07/2005, 14h10

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