Thursday, June 5, 2025

C programming - Set n bits from pth position of an integer

int bit_array[32];

void show_bits(int val);

void set_p_n_bits(int val, int p, int n);

int main()

{

    int a,p,n;

    printf("enter a number in hex\n");

    scanf("%x", &a);

    printf("enter a pth position\n");

    scanf("%x", &p);

    printf("enter number of bits\n");

    scanf("%x", &n);

    printf("\nafter setting %d bits from %dth position\n",n,p);

    set_p_n_bits(a,p,n);

    return 0;

}


void show_bits(int val)

{  

     int i;

     for(i=0;i<32;i++)

    {

        bit_array[31-i] = (val & 1);

       val = val >> 1;

   }   

   for(i=0;i<32;i++)

     printf("%d",bit_array[i]);

}

//create mask

//111111111111111111

//000011111111111111 --> 4 shifts

//111100000000000000  --> negation

//000000001111000000  ---> shift 31-p

//if p = 10

//   n = 4

//pth bit

//n is number of bits to be set.

void set_p_n_bits(int val, int p, int n)

{

     int mask = (~(0xffffffff >> n) >> (31-p));

     printf("val is %x = ",val);

     show_bits(val);

     printf("\nmask is ");

     show_bits(mask);

     val = val | mask;

     printf("\nmodified val is %x = ",val);

    show_bits(val);

    return;

No comments:

Post a Comment