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

instruction langage



  1. #1
    invite669721b7

    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. #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.

  3. #3
    invitee05a3fcc

    Re : instruction langage

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

  4. #4
    invite669721b7

    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.

  5. A voir en vidéo sur Futura
  6. #5
    invite2562e666

    Re : instruction langage

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

    th

  7. #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"

  8. #7
    invite669721b7

    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;

  9. #8
    invite5637435c

    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.
    @+

  10. #9
    invite669721b7

    Re : instruction langage

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

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

  11. #10
    invite5637435c

    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
    @+

  12. #11
    invite5637435c

    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.

  13. #12
    invite669721b7

    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 | ?

  14. #13
    invite5637435c

    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 invitee002cb17 dans le forum Électronique
    Réponses: 26
    Dernier message: 04/05/2006, 17h17
  3. processus et instruction assembleur
    Par invite0f2cdab3 dans le forum Logiciel - Software - Open Source
    Réponses: 14
    Dernier message: 18/12/2004, 16h32
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...