Bit et c

stephane -  
 DestyNov@ -
Bonjour,
je veux créer une fonction

ValBit(int ent, int numbit)

Cette fonction doit me renvoyer 1 ou 0
mon entir etant 1001010 et je souhaite connaitre le bit numéro 3 ici 0
pouvez vous m'expliquer la demarche à suivre ?

5 réponses

  1. DestyNov@
     
    'lut =)

    moi je ferais un petit masque avec un "ET". explication :
    tu cherches à savoir si le 3è bit est 1 ou 0, tu déclares donc un entier égal à 00000100. tu fais un "ET" ("&" en c)entre tes valeurs. si le résultat = 0 alors c'était un 0, sinon c'était un 1. voilà la méthode, à toi de faire l'algo (je le veux bien si tu veux bien le poster quand il sera fait =) )

    ++ bonne prog'
    0
  2. stephane
     
    je dois forcement convertir numbit en bianire ?
    0
  3. stephane
     
    voici le code que j'ai effectué :

    int BitValeur(int ent, int numbit)
    {
    int val,i;
    val = 1;
    for(i=1; i<numbit;i++)
    {
    val = val*10 ;
    }

    val = ent & val;
    printf("%d", val);
    return val;
    }
    lorsque j'ai ent = 10 cela marche tres bien
    mais si ent = 0010 cela ne marche pas je cherche donc à combler ce problème pouvez vous m'aidez ?
    0
  4. stephane
     
    Je te remercie mais l'olgo d'en haut marche.
    Maintenant je dois pouvoir inverer un bit le passer à 1 ou a 0
    peux tu me donner le principe ?

    Merci beaucoup
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. DestyNov@
     
    Salut =)

    bien joué pour la fonction ! mais je ne comprends pas comment elle marche, si tu peux m'expliquer. parce que si tu choisis de regarder le 3è bit, val=30 donc 00011110 en binaire.
    Donc si ent = 40 par exemple, ou 00101000 et bien 00101000&00011110 donnera comme résultat 00001000, ou 8 en décimal. donc !=0 mais le 3è bit est pourtant à 0.

    sinon pour inverser un bit, il suffit de faire un masque (et oui encore !), mais cette fois un OU EXCLUSIF (ou XOR, ou "^" en c). voici la table de vérité de l'opération :
    0^0 = 0
    1^0 = 1
    0^1 = 1
    1^1 = 0

    comme d'hab je te laisse faire l'algo ;-)

    de toutes façons, tu peux aller voir sur google pour faire des recherches sur les opérateurs, ça t'aidera il doit y avoir des exemples.

    bon courage =)
    0