Forcer un bit

Contenu du snippet

EN C

Source / Exemple :


#include<stdio.h> //entréesIOsorties STanDards Prin Scan
#include<conio.h> //entréesIOsorties CONsole Getch()
#include<stdlib.h>
#include<math.h>
#include <ctype.h>
#include<string.h>

void affich_binaire (int val);
void force (int Bit_1, int forc_1,int forc_0_1);

void affich_binaire (int val)
{
        int i;
                gotoxy(10,3);
                printf("la conversion binaire de %3i  est ",val);
                
                for(i=0;i<8;i++)
                {
                if ((val & 0x01) == 0x01)
                        {
                        gotoxy(60-2*i,3);
                        printf("1");
                        }
                        else
                        {
                        gotoxy(60-2*i,3);
                        printf("0");
                        }
                val=val>>1;
                }
}

void force (int Bit_1, int forc_1,int forc_0_1)
{
        int tab[8]={1,2,4,8,16,32,64,128};
        int tab_2[8]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};
        
        int tamp,i,j=0;
        
        i=Bit_1;
        tamp=forc_1;
        
        if(forc_0_1==1)
        {
        tamp=tamp|tab[i];
        }
        else
        {
        tamp=tamp&tab_2[i];
        }
        
        for(j=0;j<8;j++)
                {
                if ((tamp & 0x01) == 0x01)
                        {
                        gotoxy(60-2*j,6);
                        printf("1");
                        }
                        else
                        {
                        gotoxy(60-2*j,6);
                        printf("0");
                        }
                tamp=tamp>>1;
                }
}

void main (void)
{
        int mem_1, val_1, bit, forc_bit;
        char choix,rep;
          
        do
        {
        clrscr();
        gotoxy(5,1);
        printf("entrez une valeur a convertir comprise entre 0 et 255 : ");
        scanf("%i",&val_1);
        }
        while ((val_1 < 0) || (val_1 > 255));

        affich_binaire(val_1);
        getch();

        do
        {
        //clrscr();
        gotoxy(5,9);
        clreol();
        printf("choisissez un forcage a 0 ou 1 : ");
        scanf("%i",&forc_bit);
        }
        while ((forc_bit < 0) || (forc_bit > 1));

        do
        {
        //clrscr();
        gotoxy(5,12);
        clreol();
        printf("choisissez le bit a forcer entre 0 et 7 : ");
        scanf("%i",&bit);
        }
        while ((bit < 0) || (bit > 7));

        force(bit,val_1,forc_bit);
        getch();
}

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.