Acceder à chaque bit ...

CyberbobCyberbob Membre
05:49 modifié dans API AppKit #1
Bonjour tout le monde,

J'ai aujourd'hui une image en bitmap (noir et blanc). Son data est représenté par un unsigned char donc la taille est d'1 octet.
Je cherche à acceder a chaque bit de cet octect.
On m'a donné des détails sur l'opérateur >> mais j'aimerais avoir des informations supplémentaires.

Merci bcp..
Si vous avez pas tout compris, je ferais une explication plus complète.

Au fait, bonne idée ce site, je suis dev Mac depuis 3 ans, et ca fait 6 mois que je suis au Cocoa.

Vive le Mac ! ;)

Réponses

  • 05:49 modifié #2
    Un moyen pour faire cela est :

    1) initialiser un masque du genre:
    † † † † † †uchar mask =† 1;
    †
    2) tu prends ensuite ton octet† et tu fais:
    † † † † † bit = octet & mask;
    † †
    † † † tu obtiens ansi le premier bit de la droite

    3) pour avoir le 2 bit de droite:
    † † † † †octet = octet >> 1;
    † † † † †bit = octet & mask;

    † à chaque fois que tu fais >> tu décales de 1 bit vers la droite.

    Il suffit de faire cela dans une boucle pour récupérer les infos sur tous les bits de ton octet.



    Exemple: (qui devrait marcher ;) )

    char octet;
    char valBit [8];
    char mask = 1;
    int i;

    // faire initialisation de octet
    // ,,,

    for (i = 0;i < 8;i ++) {
    † valBit = octet & mask ? 1 : 0;
    † octet = octet >> 1;
    }

  • CyberbobCyberbob Membre
    05:49 modifié #3
    Ok d'accord, je commence a comprendre. Cepedant, je me suis rendu compte , qu'il faut que j'accede au 8 bits de gauche a droite

    Comment faire pour avoir le premier bit, apres je suppose que je décale de << 1 ?

    Merci bcp pour ta réponse.

    Cyberbob
  • 05:49 modifié #4
    dans 1087052065:

    Ok d'accord, je commence a comprendre. Cepedant, je me suis rendu compte , qu'il faut que j'accede au 8 bits de gauche a droite

    Comment faire pour avoir le premier bit, apres je suppose que je décale de << 1 ?

    Merci bcp pour ta réponse.

    Cyberbob


    Pour avoir le premier bit à droite, on utilise 1 comme masque car en binaire nous avons: 1= 00000001b
    Pour avoir le premier bit de gauche, il nous faut comme masque: 10000000b  qui vaut en décimal 128  :)
Connectez-vous ou Inscrivez-vous pour répondre.