Binaire

Description

Voici des petites fonction pour l'utilisation des valeurs binaires.
Quelques ptites fonctions :
void entier_octet(); // int -> bin
void octet_entier(); // bin -> int
void octet_inverser(); // inverser ( 1 -> 0 ; 0 -> 1 )
void octet_decaler(int decalage); // decalage de x

J'ai utilise des variables publique parce que je sais pas comment retouner un tableau ...
Si qqn le sait, un peu d'aide n'est pas de refus.
Et pour le decalage j'ai code comme un barbare avec un switch(), si qqn la aussi a le courage de creer une fonction (j avais la flemme ;) sans switch (ce qui serait utile pour les valeur binaires qui ont plus ou moins de 8 bits).

On peut facilement remplacer le nombre de bits avec un #define.

Source / Exemple :


#include <stdio.h>

int entier = 128;
int octet[9];
int i;

void entier_octet();
void octet_entier();
void octet_inverser();
void octet_decaler(int decalage); 
void octet_afficher();
void entier_afficher();

main(int argc, char *argv[])
{

    entier_octet();
    
    octet_afficher();
        
//  octet_decaler(4);
//  octet_inverser()
    
	octet_entier();

    entier_afficher();
    
    getche();

	return 0;

}

void octet_afficher(){

	for(i = 1 ; i <= 8; i++){
        printf("%d",octet[i]);
	}
    printf("\n");
    
}

void entier_afficher(){

    printf("%d",entier);
    printf("\n");

}

void entier_octet(){

	if((entier / 128) < 1) {octet[1] = 0;}else{octet[1] = 1; entier = entier - 128;}
	if((entier / 64) < 1)  {octet[2] = 0;}else{octet[2] = 1; entier = entier - 64;}
	if((entier / 32) < 1)  {octet[3] = 0;}else{octet[3] = 1; entier = entier - 32;}
	if((entier / 16) < 1)  {octet[4] = 0;}else{octet[4] = 1; entier = entier - 16;}
	if((entier / 8) < 1)   {octet[5] = 0;}else{octet[5] = 1; entier = entier - 8;}
	if((entier / 4) < 1)   {octet[6] = 0;}else{octet[6] = 1; entier = entier - 4;}
	if((entier / 2) < 1)   {octet[7] = 0;}else{octet[7] = 1; entier = entier - 2;}
	if((entier / 1) < 1)   {octet[8] = 0;}else{octet[8] = 1;}
	
}

void octet_entier(){

	entier = octet[1]*128+octet[2]*64+octet[3]*32+octet[4]*16+octet[5]*8+octet[6]*4+octet[7]*2+octet[8]*1;
	
}

void octet_inverser(){

	octet[1] = !octet[1];
	octet[2] = !octet[2];
	octet[3] = !octet[3];
	octet[4] = !octet[4];
	octet[5] = !octet[5];
	octet[6] = !octet[6];
	octet[7] = !octet[7];
	octet[8] = !octet[8];
	
}

void octet_decaler(int decalage){

    int octet_temp[9];
    
	octet_temp[1] = octet[1];
	octet_temp[2] = octet[2];
	octet_temp[3] = octet[3];
	octet_temp[4] = octet[4];
	octet_temp[5] = octet[5];
	octet_temp[6] = octet[6];
	octet_temp[7] = octet[7];
	octet_temp[8] = octet[8];

	switch(decalage){
		case 0:
			octet[1] = octet_temp[1];
			octet[2] = octet_temp[2];
			octet[3] = octet_temp[3];
			octet[4] = octet_temp[4];
			octet[5] = octet_temp[5];
			octet[6] = octet_temp[6];
			octet[7] = octet_temp[7];
			octet[8] = octet_temp[8];
			break;
		case 1:
			octet[1] = octet_temp[2];
			octet[2] = octet_temp[3];
			octet[3] = octet_temp[4];
			octet[4] = octet_temp[5];
			octet[5] = octet_temp[6];
			octet[6] = octet_temp[7];
			octet[7] = octet_temp[8];
			octet[8] = octet_temp[1];
			break;
		case 2:
			octet[1] = octet_temp[3];
			octet[2] = octet_temp[4];
			octet[3] = octet_temp[5];
			octet[4] = octet_temp[6];
			octet[5] = octet_temp[7];
			octet[6] = octet_temp[8];
			octet[7] = octet_temp[1];
			octet[8] = octet_temp[2];
			break;
		case 3:
			octet[1] = octet_temp[4];
			octet[2] = octet_temp[5];
			octet[3] = octet_temp[6];
			octet[4] = octet_temp[7];
			octet[5] = octet_temp[8];
			octet[6] = octet_temp[1];
			octet[7] = octet_temp[2];
			octet[8] = octet_temp[3];
			break;
		case 4:
			octet[1] = octet_temp[5];
			octet[2] = octet_temp[6];
			octet[3] = octet_temp[7];
			octet[4] = octet_temp[8];
			octet[5] = octet_temp[1];
			octet[6] = octet_temp[2];
			octet[7] = octet_temp[3];
			octet[8] = octet_temp[4];
			break;
		case 5:
			octet[1] = octet_temp[6];
			octet[2] = octet_temp[7];
			octet[3] = octet_temp[8];
			octet[4] = octet_temp[1];
			octet[5] = octet_temp[2];
			octet[6] = octet_temp[3];
			octet[7] = octet_temp[4];
			octet[8] = octet_temp[5];
			break;
		case 6:
			octet[1] = octet_temp[7];
			octet[2] = octet_temp[8];
			octet[3] = octet_temp[1];
			octet[4] = octet_temp[2];
			octet[5] = octet_temp[3];
			octet[6] = octet_temp[4];
			octet[7] = octet_temp[5];
			octet[8] = octet_temp[6];
			break;
		case 7:
			octet[1] = octet_temp[8];
			octet[2] = octet_temp[1];
			octet[3] = octet_temp[2];
			octet[4] = octet_temp[3];
			octet[5] = octet_temp[4];
			octet[6] = octet_temp[5];
			octet[7] = octet_temp[6];
			octet[8] = octet_temp[7];
			break;
		case 8:
			octet[1] = octet_temp[1];
			octet[2] = octet_temp[2];
			octet[3] = octet_temp[3];
			octet[4] = octet_temp[4];
			octet[5] = octet_temp[5];
			octet[6] = octet_temp[6];
			octet[7] = octet_temp[7];
			octet[8] = octet_temp[8];
			break;
	}

}

Conclusion :


Bon Code ...

.:: SkyMan ::

URL : http://www.skyweb.t2u.com/

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.