RicardasSim

check byte flag

Feb 17th, 2019
608
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.30 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. unsigned char ucA = 0b10101100;
  5.  
  6. const char* checkFlagCharV1(unsigned char ucVal, unsigned char ucPos)
  7. {
  8.    
  9.     if(ucPos>7) return "error: pos out of range. (0-7)";
  10.    
  11.     unsigned char ucB = 1u << ucPos;
  12.    
  13.     if(ucVal & ucB) return "true ";
  14.     else return "false ";
  15.    
  16. }
  17.  
  18. const char* checkFlagCharV2(unsigned char ucVal, unsigned char ucPos)
  19. {
  20.    
  21.     if(ucPos<1||ucPos>8) return "error: pos out of range. (1-8)";
  22.    
  23.     unsigned char ucB = 1u << (ucPos - 1);
  24.    
  25.     if(ucVal & ucB) return "true ";
  26.     else return "false ";
  27.    
  28. }
  29.  
  30. int main (int argc, char **argv){
  31.  
  32.     int bit_pos = 8;
  33.    
  34.     while(bit_pos--)
  35.     {
  36.        
  37.         unsigned char ucB = 1u << bit_pos;
  38.  
  39.         printf("%s", ucA & ucB ? "true " : "false ");
  40.        
  41.     }
  42.    
  43.     printf("\n");
  44.    
  45.     for(bit_pos = 0; bit_pos < 8; bit_pos++)
  46.     {
  47.        
  48.         unsigned char ucB = 1u << bit_pos;
  49.        
  50.         printf("%s", ucA & ucB ? "true " : "false ");
  51.        
  52.     }
  53.  
  54.     printf("\n");
  55.    
  56.     printf("%s",checkFlagCharV1(ucA,0));
  57.     printf("%s",checkFlagCharV1(ucA,1));
  58.     printf("%s",checkFlagCharV1(ucA,2));
  59.     printf("%s",checkFlagCharV1(ucA,3));
  60.     printf("%s",checkFlagCharV1(ucA,4));
  61.     printf("%s",checkFlagCharV1(ucA,5));
  62.     printf("%s",checkFlagCharV1(ucA,6));
  63.     printf("%s",checkFlagCharV1(ucA,7));
  64.    
  65.     printf("\n");
  66.    
  67.     printf("%s",checkFlagCharV2(ucA,1));
  68.     printf("%s",checkFlagCharV2(ucA,2));
  69.     printf("%s",checkFlagCharV2(ucA,3));
  70.     printf("%s",checkFlagCharV2(ucA,4));
  71.     printf("%s",checkFlagCharV2(ucA,5));
  72.     printf("%s",checkFlagCharV2(ucA,6));
  73.     printf("%s",checkFlagCharV2(ucA,7));
  74.     printf("%s",checkFlagCharV2(ucA,8));
  75.    
  76.     printf("\n");
  77.    
  78.     printf("%s\n",checkFlagCharV1(ucA,-1));
  79.     printf("%s\n",checkFlagCharV1(ucA,8));
  80.  
  81.     printf("%s\n",checkFlagCharV2(ucA,-1));
  82.     printf("%s\n",checkFlagCharV2(ucA,10));
  83.    
  84. return 0;
  85. }
  86.  
  87. /*
  88. output:
  89.  
  90. true false true false true true false false
  91. false false true true false true false true
  92. false false true true false true false true
  93. false false true true false true false true
  94. error: pos out of range. (0-7)
  95. error: pos out of range. (0-7)
  96. error: pos out of range. (1-8)
  97. error: pos out of range. (1-8)
  98.  
  99.  
  100. */
Advertisement
Add Comment
Please, Sign In to add comment