Bit et c

Fermé
stephane - 16 févr. 2005 à 16:37
 DestyNov@ - 17 févr. 2005 à 09:25
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 ?
A voir également:

5 réponses

'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
je dois forcement convertir numbit en bianire ?
0
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
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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