Sunteți pe pagina 1din 2

#include <stdio.

h>
#define BIT 3 //*************de aici poti modifica ce bit iti este citit sau mod
ificat in octet
#define get_bit_v1(pozitie, octet) (octet>>pozitie)&1 //3 meto
de de a afla valoarea unui bit intr-un octet
#define get_bit_v2(pozitie, octet) ((octet&(1<<pozitie)) == 0) ? 0 : 1
#define get_bit_v3(pozitie, octet) ((octet>>pozitie) % 2)
#define set_bit(pozitie, octet) octet = octet|(1<<pozitie) //indiferent
de cum era va fi 1
#define reset_bit(pozitie, octet) octet = octet&(~(1<<pozitie)) //indiferent
de cum era va fi 0
#define change_bit(pozitie, octet) octet = octet^(1<<pozitie) //daca e 1 va
fi schimbat in 0, daca e 0 va fi 1

int main()
{
//1.
int numar = 0b10101011; //**********************de aici poti sa schimbi
octetul
printf("1.\n");
printf("Numarul de la care s-a pornit:\n");
afisare_binar(numar);
//2.
printf("\n2.\n");
printf("Se citeste al %d-lea bit din octet in 3 moduri diferite\n",BIT);
printf("%d\n",get_bit_v1(BIT,numar));
printf("%d\n",get_bit_v2(BIT,numar));
printf("%d\n",get_bit_v3(BIT,numar));
//3.
printf("\n3.\n");
set_bit(BIT,numar);
printf("al %d-lea bit a fost setat\n",BIT);
afisare_binar(numar);
//4.
printf("\n4.\n");
reset_bit(BIT,numar);
printf("al %d-lea bit a fost resetat\n",BIT);
afisare_binar(numar);
//5.
printf("\n5.\n");
change_bit(BIT,numar);
printf("al %d-lea bit a fost modificat\n",BIT);
afisare_binar(numar);
change_bit(BIT,numar);
printf("\nal %d-lea bit a fost modificat\n",BIT);
afisare_binar(numar);
return 0;
}
void afisare_binar(int nr) //afiseaza numarul in biar, preluand, pe rand, fiec
are bit din octet
{
int i;
printf("%d\n",nr);
for (i = 7; i >= 0; i--)
{
printf("%d",get_bit_v1(i,nr));
}
printf("\n");
}
//musc-o!!!

S-ar putea să vă placă și