#include void set_flag(int* flag_holder, int flag_position); int check_flag(int
ID: 3784972 • Letter: #
Question
#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; }Explanation / Answer
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> for (int i = 0; i <= 31; i++)
{
if(i != flag_position)
{
+ 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(" ");
}
}
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
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.