Can you direct me where is my problem here? I am trying to test values of an array.
Every value presents 16 bits (flags) and I need to check if the flag is set or not.
My current output is shown below and also the expected output.
#include <stdio.h>
unsigned short value[1];
unsigned int bitCheck(unsigned int mask, int pin);
unsigned short mask;
int main(void){
value[0]=0;
value[1]=4095;
int pin0 = 0;
int pin1 = 1;
unsigned int bit0= bitCheck( mask, pin0);
unsigned int bit1= bitCheck( mask, pin1);
for (int i =0;i<=1; i++)
{
mask=value[i];
printf("Mask = %d ==>>\n", mask);
if ( bit0 == 1 ){
printf("Pin %d is Set\n", pin0);
}else{
printf("Pin %d is not Set\n", pin0);
}
if ( bit1 == 1 ){
printf("Pin %d is Set\n", pin1);
}else{
printf("Pin %d is not Set\n", pin1);
}
printf("\n");
}
}
unsigned int bitCheck(unsigned int mask, int bit){
if ( (mask >> bit ) & 1){
return 1;
}else{
return 0;
}
}
My output is:
Mask = 0 ==>>
Pin 0 is not Set
Pin 1 is not Set
Mask = 4095 ==>>
Pin 0 is not Set
Pin 1 is not Set
and it must be:
Mask = 0 ==>>
Pin 0 is not Set
Pin 1 is not Set
Mask = 4095 ==>>
Pin 0 is Set
Pin 1 is Set