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

C Discussion :

opérateur modulo et printf


Sujet :

C

  1. #1
    Membre du Club
    Homme Profil pro
    Ingénieur/Chercheur
    Inscrit en
    Novembre 2007
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur/Chercheur

    Informations forums :
    Inscription : Novembre 2007
    Messages : 122
    Points : 46
    Points
    46
    Par défaut opérateur modulo et printf
    Bonjour,
    je cherche à afficher le nombre formé par les 4 derniers bits de nombres plus grands placés en mémoire. J'utilise la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printf("%u\n", (*pmem)%16);
    où pmem pointe sur ces nombres. Or j'obtiens des résultats du type :
    4294967289
    alors que je m'attends à des résultats compris entre 0 et 15. Quel est le problème ?
    Merci.

  2. #2
    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 : 42
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Quel est le type de pmem ? Un entier 32bits signé ?
    Quelle est sa valeur ?
    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.

  3. #3
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2014
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2014
    Messages : 345
    Points : 1 211
    Points
    1 211
    Par défaut
    Si *pmem == -1 alors (*pmem % 16) == -1 donc comme tu affiches avec %u, ton int est interprété comme un unsigned int ...
    Il me semble que -1 == 0xffffffff (en 32-bits signés) donc en non signé décimal ça devient 4294967289.

    Si tu veux tester les bits d'un nombre, utilise plutôt les masques et les décalages de bits.
    Par exemple, pour récupérer les 4 bits de poids faible de *pmem :
    *pmem & 0xf

  4. #4
    Membre du Club
    Homme Profil pro
    Ingénieur/Chercheur
    Inscrit en
    Novembre 2007
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur/Chercheur

    Informations forums :
    Inscription : Novembre 2007
    Messages : 122
    Points : 46
    Points
    46
    Par défaut
    Merci pour l'idée des masques, ça marche nickel.

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

Discussions similaires

  1. Opérateur Modulo avec float
    Par Vice555 dans le forum C++
    Réponses: 4
    Dernier message: 29/01/2014, 21h02
  2. Modulo négatif, opérateur %
    Par Invité dans le forum Langage
    Réponses: 15
    Dernier message: 09/09/2011, 15h44
  3. Réponses: 4
    Dernier message: 16/02/2010, 12h05
  4. Opérateur modulo en informix
    Par GBAGO dans le forum Informix
    Réponses: 2
    Dernier message: 27/06/2006, 13h11
  5. fonction printf
    Par ydeleage dans le forum C
    Réponses: 7
    Dernier message: 30/05/2002, 11h24

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