Provide C code no macros to do the following use mask expres
Provide C code (no macros) to do the following: (use mask expression)
Toggle bit 15 of target, with results in results.
Set bit 17 of target, with results in results
Clear bits 23..19 of target, with results in results
Get bit 19 of target, with results in results
Replace bit 23 of target with value in new and results in target
Replace bits 27..20 of target with value in new and results in target
Get bits 23..11 of target, with results in results.
Solution
#include<stdio.h>
int main()
{
int target, results;
unsigned r=0, i;
printf(\"Enter the target: \");
scanf(\"%d\", &target);
/* Toggle bit 15 of target */
results = target ^ (1<<15);
printf(\"Target after toggling bit 15: %d\", results);
/* Set bit 17 of target */
results=target | (1 <<15);
printf(\"Target after setting bit 15: %d\", results);
/* Clear bits 19..23 of target */
r = chooseMask(19,23);
results = r & target;
printf(\"Target after clearing the bits: %d\", results);
/* Get bit 19 of target */
results = ( target >>19) & 1;
printf(\"The 19th bit is set to : %d\", results);
/* Get bits 11..23 of target */
r = chooseMask(11,23);
results = (target >> r ) & 1;
printf(\"%d\", results);
/* Function to choose a particular bit values */
unsigned chooseMask(unsigned a, unsigned b)
{
for(i=a; i<=b; i++)
r |= 1<< i ;
return r;
}
return 0;
}

