include void setflagint flagholder int flagposition int chec

#include void set_flag(int* flag_holder, int flag_position); int check_flag(int flag_holder, int flag_position); int main(int argc, char* argv[]) { int flag_holder = 0; int i; set_flag(&flag;_holder, 3); set_flag(&flag;_holder, 16); set_flag(&flag;_holder, 31); for(i=31; i>=0; i--) { printf(\"%d\", check_flag(flag_holder, i)); if (i%4 ==0) { printf(\" \"); } } printf(\"\ \"); return 0; } void set_flag(int * flag_holder, int flag_position) { int flag = 1; flag = flag flag_position; return (flag_holder & set_bit) > 0; }

Solution

C code:

#include <stdio.h>
#include <math.h>
#include <string.h>

void set_flag(unsigned int* flag_holder, int flag_position)
{
   unsigned int flag = 1;
flag = flag << flag_position ;
*flag_holder = (*flag_holder | flag);
}

void unset_flag(unsigned int* flag_holder, int flag_position)
{
   unsigned int ones = 0;
   for (int i = 0; i <= 31; i++)
   {
       if(i != flag_position)
       {
           ones = ones + pow(2,i);
       }
   }

*flag_holder = (*flag_holder & ones);
}

void display_32_flags(unsigned int flag_holder)
{

   int bits[32];
   int j = 0;
   for (int i = 31; i >= 0 ; i--)
   {
   bits[j] = flag_holder%2;
   j = j+1;
   flag_holder = flag_holder/2;      
   }
   for (int i = 31; i >= 0; i--)
   {
       printf(\"%i\", bits[i]);
       if(i%4 == 0)
       {
           printf(\"\\t\");
       }
   }
           printf(\"\ \");
}

int main()
{
   unsigned int flag_holder = 0;
   set_flag(&flag_holder,3);
   set_flag(&flag_holder,16);
   set_flag(&flag_holder,31);

   display_32_flags(flag_holder);

   unset_flag(&flag_holder,31);
   unset_flag(&flag_holder,3);
   set_flag(&flag_holder,9);

   display_32_flags(flag_holder);
   return 0;
}

Sample Output:

1000   0000   0000   0001   0000   0000   0000   1000  
0000   0000   0000   0001   0000   0010   0000   0000  

 #include void set_flag(int* flag_holder, int flag_position); int check_flag(int flag_holder, int flag_position); int main(int argc, char* argv[]) { int flag_ho
 #include void set_flag(int* flag_holder, int flag_position); int check_flag(int flag_holder, int flag_position); int main(int argc, char* argv[]) { int flag_ho

Get Help Now

Submit a Take Down Notice

Tutor
Tutor: Dr Jack
Most rated tutor on our site