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 :

Modifier les bits de poids faible


Sujet :

C

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2013
    Messages : 95
    Points : 41
    Points
    41
    Par défaut Modifier les bits de poids faible
    Bonjour j'ai un exercice ou je dois créer une fonction permettant de cacher un code simple dans des pixel d'une image numérique. Bon ce n'est que un énoncer pour débutant je suis sur que en vrai je devrais procéder autrement

    la prof me donne la fonction lsb je ne doit que lire ce qu'elle à besoin et ce qu'elle va faire. J'ai fait l'exercice mais je ne suis pas sur de mon code. J'ai surement mal utiliser les pointeurs d'où je viens vous demander de me faire remarquer mes bourdes.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
    typedef struct
    {
    	char bleu;
    	char rouge;
    	char vert
    	}
    pixel;
     
    typedef struct
    {
    	image pixel[12]
    }
    tabImages;
     
    //pré: c pointe sur un octet et x == 0 ou x == 1
    //post: x est inchangé et le bit de poids faible de *c est mis à x, les autres bits de *c sont inchangés.
    void lsb(char* c, char x)
    {
    	if(x == 1)  *c = *c | x;
    	else 		*c = *c & 0xFE;
    }
     
    //pré: tabImage contient un tableau de pixel de 12 pixel et i est un entier.
    //post: tabImage contient des pixels modifié et int est inchangés
    //résultat: les bit de int sont inserer dans le lsb des pixel de tabImage
    void modification( struct tabImages, int i)
    {
    	char tabBit[32];	int cpt;	int modulo=1;
    	for(cpt=0;cpt<32;cpt++){
    	tabBit[cpt] = (i & modulo);   //on stock les bits dans un tableau (32 bit == 32 case)
    	modulo *= 2;    //modulo 1..2..4..8..
    	}
     
    	int cptP;	//compteur des pointeurs par pixel
    	cpt=0;
    	while(cpt<12){
    	char * couleur = tabImages[cpt].image.rouge;
    	char * (couleur+1) = tabImages[cpt].image.vert;
    	char * (couleur+2) = tabImages[cpt].image.bleu;
    	cpt++;
     
    		for(cptP=0;cptP<3;cptP++){
    		color = *(couleur+cptP);
    		lsb(color,tabBit[cpt]);
    		}
    	}
    hormis la procédure lsb tout le code vient de moi. Je ne suis pas habitué à manier les pointeur mais c'est le but de l'exercice.

    merci d'avance !

  2. #2
    Membre averti
    Homme Profil pro
    Cadre informatique
    Inscrit en
    Avril 2013
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Cadre informatique

    Informations forums :
    Inscription : Avril 2013
    Messages : 183
    Points : 435
    Points
    435
    Par défaut
    Coucou,

    Est-ce que ça fonctionne au moins?
    J'ai l'impression que tu n'as pas compiler, il y a des oublis à droite et à gauche

    Citation Envoyé par Linquisiteur Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    typedef struct
    {
    	char bleu;
    	char rouge;
    	char vert
    	}
    pixel;
    
    typedef struct
    {
    	image pixel[12]; // manque le point virgule. Et c'est quoi image? Peut etre est ce pixel image[12];??
    }
    tabImages;
    [...]
    //pré: tabImage contient un tableau de pixel de 12 pixel et i est un entier.
    //post: tabImage contient des pixels modifié et int est inchangés
    //résultat: les bit de int sont inserer dans le lsb des pixel de tabImage
    void modification( struct tabImages, int i)
    // tu as une structure tabImages déjà existante -> Utilises juste en parametres tabImages monTableau
    {
    	char tabBit[32];	int cpt;	int modulo=1;
    	for(cpt=0;cpt<32;cpt++){
    	tabBit[cpt] = (i & modulo);   //on stock les bits dans un tableau (32 bit == 32 case)
    	modulo *= 2;    //modulo 1..2..4..8..
    	} 
    	
    	int cptP;	//compteur des pointeurs par pixel
    	cpt=0;
    	while(cpt<12){
    	char * couleur = tabImages[cpt].image.rouge; 
    	char * (couleur+1) = tabImages[cpt].image.vert;
    	char * (couleur+2) = tabImages[cpt].image.bleu;
            // que vaut image dans les 3 lignes? A quoi correspond-il?
    	cpt++;
    	
    		for(cptP=0;cptP<3;cptP++){
    		color = *(couleur+cptP);
    		lsb(color,tabBit[cpt]);
    		}
    	}

  3. #3
    Membre confirmé
    Avatar de deletme
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2011
    Messages : 257
    Points : 519
    Points
    519
    Par défaut
    Salut,

    Avant de te proposer une solution, je veux être sûr d'avoir bien compris ton objectif.
    Tu as un code contenu dans un entier et tu souhaites l'intégrer dans une image en modifiant la valeur du bit de poids faible des pixels c'est bien ça ?
    "Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live."
    - Martin Golding
    Traduction obligatoire : "Toujours écrire du code en gardant en tête que le mec qui en assurera la maintenance est un psychopathe violent qui connait votre adresse"

  4. #4
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 986
    Points
    30 986
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Linquisiteur Voir le message
    J'ai surement mal utiliser les pointeurs d'où je viens vous demander de me faire remarquer mes bourdes.
    Salut

    Citation Envoyé par Linquisiteur Voir le message
    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    typedef struct
    {
    	char bleu;
    	char rouge;
    	char vert
    } pixel;
     
    typedef struct
    {
    	image pixel[12]
    } tabImages;
    Essaye de nommer tes types "t_qqchose" plutôt que de leur donner des mnémoniques ressemblant à des noms de variables. tabImage c'est un tableau d'images, pas un type !!!
    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    typedef struct
    {
    	char bleu;
    	char rouge;
    	char vert
    } t_pixel;
     
    typedef struct
    {
    	image pixel[12]
    } t_image;

    Citation Envoyé par Linquisiteur Voir le message
    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    //pré: tabImage contient un tableau de pixel de 12 pixel et i est un entier.
    //post: tabImage contient des pixels modifié et int est inchangés
    //résultat: les bit de int sont inserer dans le lsb des pixel de tabImage
    void modification( struct tabImages  //tabImages est un type, pas une structure. Et où est la variable ??? Hé oui, c'est ça quand on ne nomme pas bien les choses...,  int i)
    {
    	char tabBit[32];	int cpt;	int modulo=1;
    	for(cpt=0;cpt<32;cpt++){
    		tabBit[cpt] = (i & modulo);   //on stock les bits dans un tableau (32 bit == 32 case)
    		modulo *= 2;    //modulo 1..2..4..8..
    		// modulo <<= 2;    => modulo 1..2..4..8.. mais en plus rapide
    	}
     
    	int cptP;	//compteur des pointeurs par pixel
    	cpt=0;
    	while(cpt<12){
    	char * couleur = tabImages[cpt].image.rouge;
    	char * (couleur+1) = tabImages[cpt].image.vert;
    	char * (couleur+2) = tabImages[cpt].image.bleu;
    	// Hum, "rouge" est un char, pas un char étoile. Pareil pour les autres
    	cpt++;
     
    		for(cptP=0;cptP<3;cptP++){
    		color = *(couleur+cptP);
    		lsb(color,tabBit[cpt]);
    		}
    	// Indentation à revoir. Ecrire du code ce n'est pas seulement écrire du code qui fonctionne mais aussi du code lisible. Es   t-ce q    u    e t                  u t                      ro                      u                         v                          es                     ce                 t                   t                          ep                                     h                           ra                          se                                       fac                                                                                   i                                                                         l                                  ea                         li               re ???
    	}

    hormis la procédure lsb tout le code vient de moi. Je ne suis pas habitué à manier les pointeur mais c'est le but de l'exercice.

    merci d'avance !
    Mes autres remarques sont dans ton code...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  5. #5
    Membre averti
    Homme Profil pro
    Cadre informatique
    Inscrit en
    Avril 2013
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Cadre informatique

    Informations forums :
    Inscription : Avril 2013
    Messages : 183
    Points : 435
    Points
    435
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    // Indentation à revoir. Ecrire du code ce n'est pas seulement écrire du code qui fonctionne mais aussi du code lisible. Es   t-ce q    u    e t                  u t                      ro                      u                         v                          es                     ce                 t                   t                          ep                                     h                           ra                          se                                       fac                                                                                   i                                                                         l                                  ea                         li               re ???
    J'adore ^^

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    typedef struct
    {
    	char bleu;
    	char rouge;
    	char vert
    } pixel;
     
    typedef struct
    {
    	image pixel[12]
    } tabImages;
    Tu oublies le "image pixel[12];" le point virgule et image c'est pas un type alors que pixel oui

  6. #6
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2013
    Messages : 9
    Points : 16
    Points
    16
    Par défaut
    Bonjour,
    Je t'envoie un lien sur l'indentation, http://fr.wikipedia.org/wiki/Style_d%27indentation c'est succin mais ça reste compréhensible.
    Lorsque l'on débute il est important de très vite indenter correctement et ce pour deux raisons : la première est la correction de ton code, une bonne indentation de permet de savoir rapidement si une accolade n'est pas matché. Pour cela, si tu en a l'occasion utilise un éditeur de texte qui te permet d'avoir l'indentation automatique, par exemple emacs le fait très bien(il utilise le premier type d’indentation du lien que je t'ai envoyé par défaut.) il ne reste que a appuyer sur tab dès que tu change de ligne (ou a naviguer dans les menu pour faire "indenter tout le document") et les parenthèse ou accolades mal matchées apparaissent beaucoup mieux comme ça. De plus tu peut savoir exactement quand tu commence/ finit une fonction ou une boucle (et ça détecte même les ";" manquant, si ce n'est pas la belle vie !!!) la deuxième raison est qu'une bonne indentation, tout comme les commentaires permettent aux autres de relire ton code plus facilement, et te permettent a toi de reprendre ton code même après un long moment sans avoir jeté un œil dessus !!

  7. #7
    Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2013
    Messages : 95
    Points : 41
    Points
    41
    Par défaut
    Oups désoler de la réponse tardive mais je n'était pas là.

    Merci beaucoup
    J'ai indenter sur notepad++ Ce n'est pas un code que je pourrais compiler. Un pur code pour cacher un message dans une information visuelle n'est pas de mon niveau..

    Par contre c'est le résultat que j'ai obtenu en accomplissant cet exercice mais je n'était pas sur de moi..

    Je vais ré indenter et mettre les ; mais ces erreur ne sont pas important du fait que je ne compilerai pas ^^'


    EDIT:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
    typedef struct
    {
    	char * bleu;
    	char * rouge;
    	char * vert;
    	}
    t_pixel;
     
    typedef struct
    {
    	t_pixel image[12];
    }
    t_GroupeImages;
     
    //pré: c pointe sur un octet et x == 0 ou x == 1
    //post: x est inchangé et le bit de poids faible de *c est mis à x, les autres bits de *c sont inchangés.
    void lsb(char* c, char x)
    {
    	if(x == 1)  *c = *c | x;
    	else 	*c = *c & 0xFE;
    }
     
    //pré: tabImage contient un tableau de pixel de 12 pixel et i est un entier.
    //post: tabImage contient des pixels modifié et int est inchangés
    //résultat: les bit de int sont inserer dans le lsb des pixel de tabImage
    void modification( t_GroupeImages monTableau, int i)
    {
    	char tabBit[32];	int cpt;	int modulo=1;
     
    	for(cpt=0;cpt<32;cpt++)
    	{
    	   tabBit[cpt] = (i & modulo);   //on stock les bits dans un tableau (32 bit == 32 case)
    	   //modulo *= 2;    //modulo 1..2..4..8..
    	   modulo <<= 2;
    	}
     
    	int cptP;	//compteur des pointeurs par pixel
    	cpt=0;
    	while(cpt<12)
    	{
         	char *  couleur = monTableau[cpt].image.rouge;
    	    char * (couleur+1) = monTableau[cpt].image.vert;
    	    char * (couleur+2) = monTableau[cpt].image.bleu;
    	    cpt++;
     
    		for(cptP=0;cptP<3;cptP++)
    		{
    		   color = *(couleur+cptP);
    		   lsb(color,tabBit[cpt]);
    		}
    	}
    }
    J'ai corriger les fautes et tenter de faire se que vous m'avez expliquer. Disons que je n'ai jamais manipuler des pointeurs dans des structures.. Donc je ne connais pas encore le "mode d'emploi" apparemment c'est la même chose.

  8. #8
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 986
    Points
    30 986
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Linquisiteur Voir le message
    J'ai indenter sur notepad++ Ce n'est pas un code que je pourrais compiler. Un pur code pour cacher un message dans une information visuelle n'est pas de mon niveau..

    ...
    Je vais ré indenter et mettre les ; mais ces erreur ne sont pas important du fait que je ne compilerai pas ^^'
    Bizarre. Si on te fait faire cet exercice, c'est qu'il est de ton niveau. Au pire on t'indique comment le faire (en clair) et tu traduis ces instructions en C.
    Quand à "compiler" au-moins ça te permet de voir si, à défaut de l'algo, la syntaxe est bonne...

    Citation Envoyé par Linquisiteur Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    typedef struct
    {
    	char * bleu;
    	char * rouge;
    	char * vert;
    	}
    t_pixel;
    
    typedef struct
    {
    	t_pixel image[12];
    }
    t_GroupeImages;
    
    //pré: c pointe sur un octet et x == 0 ou x == 1
    //post: x est inchangé et le bit de poids faible de *c est mis à x, les autres bits de *c sont inchangés.
    void lsb(char* c, char x)
    {
    	if(x == 1)  *c = *c | x;
    	else 	*c = *c & 0xFE;
    }
    
    //pré: tabImage contient un tableau de pixel de 12 pixel et i est un entier.
    //post: tabImage contient des pixels modifié et int est inchangés
    //résultat: les bit de int sont inserer dans le lsb des pixel de tabImage
    void modification( t_GroupeImages monTableau,
    /* Ca marche... mais étant donné qu'un paramètre est recopié depuis la variable passée, tu comprendras qu'il est plus pratique de passer par un pointeur.
    En effet, recopier une adresse (même d'une structure) ira plus vite que recopier la structure elle-même
    Toutefois c'est pas primordial de piger ça de suite...   */
     int i)
    {
    	char tabBit[32];	int cpt;	int modulo=1;
    	
    	for(cpt=0;cpt<32;cpt++)
    	{
    	   tabBit[cpt] = (i & modulo);   //on stock les bits dans un tableau (32 bit == 32 case)
    	   //modulo *= 2;    //modulo 1..2..4..8..
    	   modulo <<= 2;
    	}
    	
    	int cptP;	//compteur des pointeurs par pixel
    	cpt=0;
    	while(cpt<12)
    	{
         	char *  couleur = monTableau[cpt].image.rouge;
    	    char * (couleur+1) = monTableau[cpt].image.vert;
    	    char * (couleur+2) = monTableau[cpt].image.bleu;
            /* Là c'est pas bon. C'est comme si t'avais écrit
            int i=123;
            int(i+1)=512;
            Tu peux pas créer de variable nommée "(couleur+1)" quoi... */
    
    	    cpt++;
    	
    		for(cptP=0;cptP<3;cptP++)
    		{
    		   color = *(couleur+cptP);
    		   lsb(color,tabBit[cpt]);
    		}
    	}
    }
    Remarques dans le code en rouge...

    Citation Envoyé par Linquisiteur Voir le message
    Disons que je n'ai jamais manipuler des pointeurs dans des structures.. Donc je ne connais pas encore le "mode d'emploi" apparemment c'est la même chose.
    Un pointeur c'est juste un type destiné à stocker une adresse. Tout comme un int est un type destiné à stocker un entier. Simplement quand tu mets une adresse dans un pointeur tu dois juste t'assurer que l'adresse est valide.
    Maintenant que le pointeur soit "encapsulé" dans une structure importe peu.

    Toutefois, revenons à ton t_pixel. Pour toi, ce type est dédié à stocker 3 adresses. Que représentent ces adresses pour toi ??? Parce que pour moi, un pixel c'est juste une couleur décomposée en 3 composantes RVB donc en 3 entiers quoi...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  9. #9
    Membre expérimenté Avatar de edgarjacobs
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2011
    Messages
    625
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2011
    Messages : 625
    Points : 1 564
    Points
    1 564
    Par défaut
    Le membre de t_groupeImages est déclaré comme un tableau. Donc l'écriture devrait être
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monTableau[cpt].image[indice].vert;

    @Sve@r
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    		modulo *= 2;    //modulo 1..2..4..8..
    		// modulo <<= 2;    => modulo 1..2..4..8.. mais en plus rapide
    Si c'est pour multiplier par 2, le code est
    Mais le compilateur ne va-t-il pas de lui-même traduire le *=2 par un shift? Je trouve qu'écrire *=2 est plus compréhensible que <<=1
    On écrit "J'ai tort" ; "tord" est la conjugaison du verbre "tordre" à la 3ème personne de l'indicatif présent

  10. #10
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 145
    Points
    23 145
    Par défaut
    Bonjour,

    @edgarjacobs : Cela dépend des optimisations du compilateur, mais il y a de très fortes chances que *=2 soit traduit par <<= 2.


    Personnellement, je pense que c'est une histoire de contexte, quand on manipule des octets comme un entier, j'utiliserais *=2.
    En revanche, quand je manipule des octets comme une suite de bits (ex. j'utilise des masques, des opérations bits à bits) j'utiliserais plutôt <<=2.

Discussions similaires

  1. Réponses: 3
    Dernier message: 12/01/2011, 11h51
  2. Modifier les bits d'un entier
    Par JLC83 dans le forum Langage
    Réponses: 2
    Dernier message: 13/01/2010, 18h18
  3. Watermarking fichier son (bits de poids faibles)
    Par lou013 dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 04/01/2009, 17h37
  4. Recuperer LSB (le bit de poids faible) d'un entier ?
    Par MadCat34 dans le forum Général Python
    Réponses: 3
    Dernier message: 12/06/2007, 10h41
  5. [debutant]bit de poid faible
    Par yonderboy dans le forum C
    Réponses: 2
    Dernier message: 27/12/2005, 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