Répondre à la discussion
Affichage des résultats 1 à 13 sur 13

instruction langage



  1. #1
    arnoldkl

    instruction langage


    ------

    bonjour,

    si on veut écrire une instruction en C qui affecte 0 à la variable d si le 5e bit de la variable c vaut 0, comment peut-on l'écrire ?
    Quelle est la méthode pour aboutir à cette instruction ?
    est-ce qu'il y a plusieurs manières de l'écrire ?

    merci de votre aide.

    -----

  2. Publicité
  3. 📣 Nouveau projet éditorial de Futura
    🔥🧠 Le Mag Futura est lancé, découvrez notre 1er magazine papier

    Une belle revue de plus de 200 pages et 4 dossiers scientifiques pour tout comprendre à la science qui fera le futur. Nous avons besoin de vous 🙏 pour nous aider à le lancer...

    👉 Je découvre le projet

    Quatre questions à explorer en 2022 :
    → Quels mystères nous cache encore la Lune 🌙 ?
    → Pourra-t-on bientôt tout guérir grâce aux gènes 👩‍⚕️?
    → Comment nourrir le monde sans le détruire 🌍 ?
    → L’intelligence artificielle peut-elle devenir vraiment intelligente 🤖 ?
  4. #2
    Gérard

    Re : instruction langage

    Citation Envoyé par arnoldkl Voir le message
    bonjour,

    si on veut écrire une instruction en C qui affecte 0 à la variable d si le 5e bit de la variable c vaut 0, comment peut-on l'écrire ?
    Quelle est la méthode pour aboutir à cette instruction ?
    est-ce qu'il y a plusieurs manières de l'écrire ?

    merci de votre aide.
    Bonjour,

    Si bit5 de c = 0 alors d = 0

    A toi de le traduire dans ton langage.

  5. #3
    DAUDET78

    Re : instruction langage

    J'ai trouvé :
    Code:
     IF ( c AND 16 ) = 0 then d = 0
    J'aime pas le Grec

  6. #4
    arnoldkl

    Re : instruction langage

    en fait, c'est sur 8 bits, et c'est le langage C pour les microcontroleurs, je crois qu'il faut utiliser un masque.
    Quelq'un peux définir la notion de masque et l'illustrer avec le post 1 ?
    merci.

  7. A voir en vidéo sur Futura
  8. #5
    invite76a

    Re : instruction langage

    if (!(var&0b0010000)) var=0;

    th

  9. #6
    Gérard

    Re : instruction langage

    Citation Envoyé par arnoldkl Voir le message
    en fait, c'est sur 8 bits, et c'est le langage C pour les microcontroleurs, je crois qu'il faut utiliser un masque.
    Quelq'un peux définir la notion de masque et l'illustrer avec le post 1 ?
    merci.
    Si tu ne sais pas ce qu'est un masque, il faut lire Bigonoff.

    Piste : Daudet a utilisé un masque, Thm aussi.
    Dernière modification par Gérard ; 07/02/2008 à 21h48. Motif: Ajout de "Thm aussi"

  10. Publicité
  11. #7
    arnoldkl

    Re : instruction langage

    on veut affecter la valeur 0 à la variable d si le 5e bit de la variable c vaut 0, les instructions 1) et 2) sont-elles équivalentes ? (d et c sont sur 8 bits)

    1)
    if ( (c & 0x10 ) == 0 )
    d = 0;

    2)
    if ( (c | 0xEF) == 1 )
    d = 0;

  12. #8
    invite03481543

    Re : instruction langage

    1)
    if ( (c & 0x10 ) == 0 )
    d = 0;

    ex: c=11100111

    on a:

    ....11100111
    &..00010000
    ___________
    =..00000000

    Donc if ( (c & 0x10 ) == 0 ) est vraie et d=0

    2)
    if ( (c | 0xEF) == 1 )
    d = 0;

    ex: c=11100111

    .....11100111
    OU.00010000
    ___________
    =..11111111

    11111111 est différent de 1 donc la condition du if n'est pas remplie.
    @+
    Dernière modification par HULK28 ; 08/02/2008 à 01h29.

  13. #9
    arnoldkl

    Re : instruction langage

    est-ce que le 1) est équivalent à :

    if ( (c | 0xEF) == 0xEF )
    d = 0;

  14. #10
    invite03481543

    Re : instruction langage

    Si tu veux vérifier la valeur d'un bit, savoir s'il est on ou off, tu dois utiliser un &.

    L'idée étant de construire un masque contenant un bit activé correspondant au bit dont tu veux savoir s'il est on ou off:

    par exemple reprenons le test sur le bit 5:

    si le bit5 est à 0, on aura 0 & 1=0 on sait donc que le bit5 est positionné à 0 puisque seule cette condition est possible avec le &.
    le OU ne permet pas de lever le doute puisque 0|1=1 ainsi que 1|1=1
    @+

  15. #11
    invite03481543

    Re : instruction langage

    Citation Envoyé par arnoldkl Voir le message
    est-ce que le 1) est équivalent à :

    if ( (c | 0xEF) == 0xEF )
    d = 0;
    Ce résultat est vrai également mais moins élégant qu'avec un & qui donne un résultat de masque égal à 0 lorsque le test est positif (dans ton exemple tu voulais savoir si le bit était positionné à 0).
    En assembleur par exemple on préfère tester si le bit Z est à 1.
    Dernière modification par HULK28 ; 08/02/2008 à 01h56.

  16. #12
    arnoldkl

    Re : instruction langage

    il faut donc préférer de mettre le & plutôt que le | ?
    Il existe donc plusieurs manières d'écrire cette condition, c-a-d avec le & ou le | ?

  17. Publicité
  18. #13
    invite03481543

    Re : instruction langage

    C'est ça, l'opérateur ET permet de tester un bit.
    L'opérateur OU sert plutôt à positionner un bit à 1.
    Essaies tu verras c'est logique.

Discussions similaires

  1. instruction bizarre
    Par marc.suisse dans le forum Logiciel - Software - Open Source
    Réponses: 3
    Dernier message: 28/03/2007, 20h03
  2. Instruction IF sur PIC 16F
    Par Adrian1903 dans le forum Électronique
    Réponses: 26
    Dernier message: 04/05/2006, 17h17
  3. processus et instruction assembleur
    Par haviyoel dans le forum Logiciel - Software - Open Source
    Réponses: 14
    Dernier message: 18/12/2004, 16h32
Découvrez nos comparatifs produits sur l'informatique et les technologies.