Probleme avec tableau

marooh Messages postés 122 Date d'inscription vendredi 8 octobre 2010 Statut Membre Dernière intervention 16 novembre 2011 - 24 déc. 2010 à 02:21
marooh Messages postés 122 Date d'inscription vendredi 8 octobre 2010 Statut Membre Dernière intervention 16 novembre 2011 - 29 déc. 2010 à 16:33
bonjour,
je voudrais représenter un ensemble d'identifiants entré par l'utilisateur par un tableau de bits
exple: {1,3,6,9} sera transformé en 01010010010
comment faire?je suis totalement perdu
merci d'avance

10 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
24 déc. 2010 à 20:18
Comment tu arrives de
1,3,6,9
à 01010010010 ???

ciao...
BruNews, MVP VC++
0
marooh Messages postés 122 Date d'inscription vendredi 8 octobre 2010 Statut Membre Dernière intervention 16 novembre 2011
25 déc. 2010 à 00:02
re,
c'est à dire en utilisant un tableau de 11 bits,le bit numero 1 aura 1,le bit 3 aura 1 etc
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
25 déc. 2010 à 01:30
Le bit 0 est celui de DROITE (sa representation visuelle) en little endian (INTEL).

au + rapide:
void SetBit(DWORD *pdwrd, DWORD idx)
{
  __asm BTS pdwrd, idx
}

Utilisation:
DWORD cBits = 0; // CHAMP DE 32 BITS
SetBit(&cBits, 1);
SetBit(&cBits, 3);
SetBit(&cBits, 6);
SetBit(&cBits, 9);


ciao...
BruNews, MVP VC++
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
25 déc. 2010 à 10:14
MOINS PERFORMANT MAIS PUR C:
DWORD dwTab[4] = {1, 3, 6, 9};
DWORD i;
DWORD cBits = 0; // CHAMP DE 32 BITS
for(i = 0; i < 4; i++) {
  cBits |= (1 << dwTab[i]);
}


ciao...
BruNews, MVP VC++
0

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

Posez votre question
marooh Messages postés 122 Date d'inscription vendredi 8 octobre 2010 Statut Membre Dernière intervention 16 novembre 2011
25 déc. 2010 à 16:13
re,
merci pour la reponse brunews mais en essayant de compiler le bout de code que t'a ecrit il y a plusieurs erreurs tel que:
pour le premier code:
il reconnais pas setbit (setbit cannot be used as function)
il ne reconnais pas dword (dword was not declared in this scope)
pour le deuxieme:
le meme probleme de dword et cbits
0
marooh Messages postés 122 Date d'inscription vendredi 8 octobre 2010 Statut Membre Dernière intervention 16 novembre 2011
25 déc. 2010 à 16:34
re,
j'ai trouvé la solution pour la deuxieme mais en executant il m'affiche rien,il m'affiche juste process returned 0 etc,il ne m'affiche pas le 01010010010 comment faire?
pour le premier il reste le probleme de setbit qui n'est pa reconnu
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
25 déc. 2010 à 17:41
Oublie pour l'instant la version 1.

J'ai deja fait le placement des bits, tu vois pour l'affichage.

ciao...
BruNews, MVP VC++
0
marooh Messages postés 122 Date d'inscription vendredi 8 octobre 2010 Statut Membre Dernière intervention 16 novembre 2011
25 déc. 2010 à 18:14
re, la deuxieme version ne m'affiche pas le code binaire
0
marooh Messages postés 122 Date d'inscription vendredi 8 octobre 2010 Statut Membre Dernière intervention 16 novembre 2011
27 déc. 2010 à 18:00
re,
j'ai écrit ce code mais ça ne marche pas

#include <stdint.h>
#include <stdio.h>

int main(){

unsigned int i = 0 | (1 << 1) | (1 << 5) | (1 << 8) | (1 << 10);
void
print_uint32(uint32_t bits)
{
        uint32_t mask;
        for (mask = 1<<31; mask; mask >>= 1) {
                fputc(bits & mask ? '1' : '0', stdout);
        }
}
}
0
marooh Messages postés 122 Date d'inscription vendredi 8 octobre 2010 Statut Membre Dernière intervention 16 novembre 2011
29 déc. 2010 à 16:33
re,
j'ai trouvé la reponse mais maintenant j'ai une autre question à vous poser:
si je veux que les bits qui prennent 1 soit choisis par l'utilisateur comment pourrai-je modifier unsigned int pour satisfaire cette condition?dois-je poser une variable x qui prendra chaque valeur entrée par l'utilisateur??
0
Rejoignez-nous