Să se scrie un program în C care citește trei numere întregi x, n, p. Să se afișeze:
- numărul format din n biți începând de la poziția p (spre dreapta)
- numărul obținut prin setarea pe 1 a celor n biți de la poziția p
- numărul obținut prin setarea pe 0 a celor n biți de la poziția p
- numărul obținut prin complementarea celor n biți din poziția p

Răspuns :

#include <stdio.h>

int main()

{

int x, n, p, i;

scanf("%d %d %d", &x, &n, &p);

printf("a) ");

for (i = n-1; i >= 0; i--)

{

 if (i < p)

 {

  if ((1 << i) & x)

   printf("1");

  else

   printf("0");

 }

}

printf("\nb) ");

for (i = n - 1; i >= 0; i--)

{

 

 if (i >= p)

 {

  if ((1 << i) & x)

   printf("1");

  else

   printf("0");

 }

 else

 {

  printf("1");

 }

}

printf("\nc) ");

for (i = n - 1; i >= 0; i--)

{

 if (i >= p)

 {

  if ((1 << i) & x)

   printf("1");

  else

   printf("0");

 }

 else

 {

  printf("0");

 }

}

printf("\nd) ");

for (i = n - 1; i >= 0; i--)

{

 if (i >= p)

 {

  if ((1 << i) & x)

   printf("1");

  else

   printf("0");

 }

 else

 {

  if ((1 << i) & x)

   printf("0");

  else

   printf("1");

 }

}

}