Comment mettre UN bit dans une avariable ?

adess00 Messages postés 261 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 27 septembre 2008 - 2 sept. 2005 à 17:13
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011 - 3 sept. 2005 à 01:11
Salut je voudrais mettre simplement un bit dans une variable
Merci

28 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
2 sept. 2005 à 17:35
masque AND, le & en C.

ciao...
BruNews, MVP VC++
0
adess00 Messages postés 261 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 27 septembre 2008 1
2 sept. 2005 à 17:36
J ai rien compris
ciao...
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
2 sept. 2005 à 17:36
Une variable fait plus d'un bit donc de toute facons, tu mettras au moins 8 bits.
Une solution est de ne tenir compte que du bit de poids faible, ce qui te donne une variable qui vaut 0 ou 1.
Tu peux aussi regarder les champs de bits qui pourraient correspondre à ton problème
0
adess00 Messages postés 261 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 27 septembre 2008 1
2 sept. 2005 à 17:41
Je sais bien que sa fera 8bits
Ce que je ve faire c recuperer les bits de 1 a 8 d un octet et les mettre dans 8 variables
0

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

Posez votre question
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
2 sept. 2005 à 17:49
Je t'ai répondu ici, ya rien a comprendre
http://www.cppfrance.com/forum.v2.aspx?ID=549370
0
adess00 Messages postés 261 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 27 septembre 2008 1
2 sept. 2005 à 17:52
Moi aussi je t ai repondu
"Je n ai pas reussi a utiliser sa"
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
2 sept. 2005 à 17:58
à utiliser sa quoi?

int i;
...
int bit0 = i & 1;
int bit1 = i & 2;
0
adess00 Messages postés 261 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 27 septembre 2008 1
2 sept. 2005 à 18:16
Je c meme pas comment l integrer dans mon code c pour sa que j avai demander un exemple

int main(void)
{
char msg[20];
char buffer[20];


printf("Message a convertir : ");
gets(msg);


int a=0;
int l=strlen(msg);
int c;
int i;
while (a!=l)
{

c=msg[a++];
int bit0 = i & 1;


_itoa(c,buffer,2);
printf("\n%s",c);
}
printf("\n\n");


system("pause");
return 0;
}
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
2 sept. 2005 à 18:22
Ton i n'est même pas initialisé! Qu'est ce que tu veux faire?
Ta boucle n'est pas du tout optimisée, l'appel à strlen ne sert à rien.
Tu fais plutot:
char* ptr = msg;
while(*ptr)
{
...
ptr++;
}
0
adess00 Messages postés 261 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 27 septembre 2008 1
2 sept. 2005 à 18:26
Bon c pas grave
0
mezaya Messages postés 202 Date d'inscription dimanche 18 mai 2003 Statut Membre Dernière intervention 6 mars 2010
2 sept. 2005 à 18:53
ex :

binaire decimal hexadecimal

00001 1
0x1

00010 2
0x2

00100 4
0x4

01000 8

0x8

10000 16

0xF

etc..



pour ajouter un bit tu fait un "ou".

ex int a = 5; // 00101

a = a | 0x2; // rajout du bit 00010

// a devient = 7



vérifie si un bit est dans la variable le "ET"

ex : int a = 5; // 00101

if( a & 0x1 ) = VRAI // verifie le bit 000001

if( a & 0x4 ) = VRAI // verifie le bit 000100

if( a & 0x2 ) = FAUX // verifie le bit 000010

Voili,Voilou
0
adess00 Messages postés 261 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 27 septembre 2008 1
2 sept. 2005 à 19:26
Merci bien je n est pas encore essayer mais je comprend deja mieux
a+
0
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
2 sept. 2005 à 23:57
utilise des bool si tu le souhaite, de tte façon, ça sera traduit en int



mais comme ça ta variable ne portera que 2 valeurs possibles:



true ou false



dc, qq part, un bit.



sinon, ce que dit vecchio est très compréhensible & directement utilisable




___________________________________________________________
Magicalement
Nono
0
adess00 Messages postés 261 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 27 septembre 2008 1
3 sept. 2005 à 00:00
C est facile de dire qu une chose est comprehensible quand on la deja assimilé
De plus, jme vois pas utiliser des bool pour un algo de cryptage
0
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
3 sept. 2005 à 00:07
:) petit troll, ne t'en fais pas pour cette boutade

mais strictement, le booléen répons à ta question:
Comment mettre UN bit dans une avariable ?

___________________________________________________________
Magicalement
Nono
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
3 sept. 2005 à 00:12
attention qu'un bool est un int, rien d'autre qu'un #define
il ne vaut 1 ou 0 que si valeur obtenue par opérateur logique mais il peut se voir attribuer nimporte quelle valeur.
Le bool n'est qu'un leurre qui peut induire en erreur, je lui préfère de loin une déclaration int explicite.

ciao...
BruNews, MVP VC++
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
3 sept. 2005 à 00:32
bool est type à part entière en C++, il faut true ou false, pas de define.
Je l'assimilerais plutot à un char car en général il fait 1 octet
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
3 sept. 2005 à 00:40
mybool = 12;
ne passerait pas ?
ah moi et le ++eries, tout un poème.

ciao...
BruNews, MVP VC++
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
3 sept. 2005 à 00:45
mybool = 12; // error C2065: 'mybool' : identificateur non déclaré
bool mybool = 12; // warning C4305: 'initialisation' : troncation de 'int' à 'bool'

J'ai vérifié que sizeof(bool) vaut bien 1
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
3 sept. 2005 à 00:45
vient de tester, compilé en mode C++ il me met 1 même si j'affecte 12.
bool concluant.

ciao...
BruNews, MVP VC++
0
Rejoignez-nous