IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Explication sur un code source


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre confirm� Avatar de Sarah!
    Profil pro
    �tudiant
    Inscrit en
    Mai 2008
    Messages
    71
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 71
    Par d�faut Explication sur un code source
    salut � tous!
    j'aimerais avoir des explications sur ce code source en c++ builder.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    for (int y = 0; y < pBitmap->Height; y++)
          for (int x = 0; x < pBitmap->Width; x++)
            {
            c=(pBitmap->Canvas->Pixels[x][y] & 0x000000C0) >> 6;
            c+=(pBitmap->Canvas->Pixels[x][y] & 0x0000C000) >> 12;
            c+=(pBitmap->Canvas->Pixels[x][y] & 0x00C00000) >> 18;
            ++V[c];
            }
    pBitmap :pointeur.
    merci.

  2. #2
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    F�vrier 2006
    Messages
    2 155
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 2 155
    Par d�faut
    Je vais t'expliquer la premi�re ligne, le reste c'est pareil :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    c=(pBitmap->Canvas->Pixels[x][y] & 0x000000C0) >> 6;
    L'op�rateur & : masque binaire. C'est un op�rateur qui manipule les bits. pour en savoir plus.
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    Pixels[x][y] & 0x000000C0
    Bon l� on se rend tout de suite compte qu'on travaille sur du 32 bits. 0x000000C0 donne en binaire : 1100 000. Donc en sortie on va r�cup�rer les 6 �me et septi�me bits de ton image en partant des bits de poids faibles ( � droite) en ignorant les valeurs des autres bits. On obtient donc par exemple:
    000000000000000000000000ab000000
    o� a valent chacun 0 ou 1. Le probl�me c'est que les bits ici maintenant sont mal plac�s, on va devoir les d�caler sur le c�t� pour lire la valeur de ces 2 bits ensemble.
    c'est l'op�rateur de d�calage de bits (toujours et encore pour en savoir plus).

    Sur l'exemple pr�c�dent, �a nous donne:
    000000000000000000000000000000ab

    Idem pour les autres lignes. La seule r�ponse que je ne pourrai pas te donner, c'est � quoi servent ces bits...

  3. #3
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Ce code prend, pour chaque pixel, les deux bits de poids fort de chaque couleur, et regroupe �a en plus petit:
    xxxxxxxxxxxxxxxxxxxxxxxx 48 bits
    -->xxxxxx 6 bits
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  4. #4
    Membre confirm� Avatar de Sarah!
    Profil pro
    �tudiant
    Inscrit en
    Mai 2008
    Messages
    71
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 71
    Par d�faut Re
    bonjour,
    merci bien c'est cool
    bonne continuation

  5. #5
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    F�vrier 2006
    Messages
    2 155
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 2 155
    Par d�faut
    En effet... C'est bien un histogramme...

  6. #6
    Invit�(e)
    Invit�(e)
    Par d�faut
    Apr�s le conversion de 48 en 6 bits, le tableau V est mis � jour. ( ++V[c]; )
    V est un histogramme de l'image.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    printf("il y a %d pixel blancs\nil y a %d pixels noirs.\n",V[0x3F], V[0X00]);

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. explication sur un code perl
    Par Melvine dans le forum Langage
    R�ponses: 5
    Dernier message: 05/10/2006, 16h32
  2. Explication sur du code javascript
    Par griese dans le forum G�n�ral JavaScript
    R�ponses: 2
    Dernier message: 21/07/2006, 09h40
  3. cherche explication sur du code
    Par abdoulzak dans le forum Langage
    R�ponses: 1
    Dernier message: 06/07/2006, 10h23
  4. besoin d'explications sur un code
    Par NAHIAG dans le forum C
    R�ponses: 8
    Dernier message: 28/05/2006, 12h37
  5. erreur sur un code source basique
    Par helix_tp dans le forum Langage
    R�ponses: 4
    Dernier message: 23/01/2006, 21h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo