fork download
  1. #include <iostream>
  2.  
  3. int main()
  4. {
  5. uint8_t sizeOfEachVariableInBits[] = {4, 2, 1, 1};
  6. uint8_t numOfStoredVariables = sizeof(sizeOfEachVariableInBits);
  7. uint8_t variablesReadFromBits[numOfStoredVariables];
  8. uint8_t rshCounter = 0;
  9.  
  10. uint8_t testValue = 0b10101110;
  11.  
  12. /* expected result:
  13. variablesReadFromBits[0] = 0b00001110
  14. variablesReadFromBits[1] = 0b00000010
  15. variablesReadFromBits[2] = 0b00000000
  16. variablesReadFromBits[3] = 0b00000001
  17. */
  18.  
  19. for ( uint8_t i = 0; i < numOfStoredVariables; i++ )
  20. {
  21. variablesReadFromBits[i] = (testValue >> rshCounter) & ((1 << sizeOfEachVariableInBits[i]) - 1);
  22. rshCounter += sizeOfEachVariableInBits[i];
  23. }
  24.  
  25. // display result
  26. for ( uint8_t i = 0; i < numOfStoredVariables; i++ )
  27. {
  28. printf( "variablesReadFromBits[%hhu] = 0b", i );
  29.  
  30. for ( int8_t j = 7; j >= 0; j-- )
  31. {
  32. printf( "%hhu", ( variablesReadFromBits[i] >> j ) & 1 );
  33. }
  34.  
  35. printf( "\n" );
  36. }
  37.  
  38. return 0;
  39. }
Success #stdin #stdout 0s 5692KB
stdin
Standard input is empty
stdout
variablesReadFromBits[0] = 0b00001110
variablesReadFromBits[1] = 0b00000010
variablesReadFromBits[2] = 0b00000000
variablesReadFromBits[3] = 0b00000001