#include <iostream>
int main()
{
uint8_t sizeOfEachVariableInBits[] = {4, 2, 1, 1};
uint8_t numOfStoredVariables = sizeof(sizeOfEachVariableInBits);
uint8_t variablesReadFromBits[numOfStoredVariables];
uint8_t rshCounter = 0;
uint8_t testValue = 0b10101110;
/* expected result:
variablesReadFromBits[0] = 0b00001110
variablesReadFromBits[1] = 0b00000010
variablesReadFromBits[2] = 0b00000000
variablesReadFromBits[3] = 0b00000001
*/
for ( uint8_t i = 0; i < numOfStoredVariables; i++ )
{
variablesReadFromBits[i] = (testValue >> rshCounter) & ((1 << sizeOfEachVariableInBits[i]) - 1);
rshCounter += sizeOfEachVariableInBits[i];
}
// display result
for ( uint8_t i = 0; i < numOfStoredVariables; i++ )
{
printf( "variablesReadFromBits[%hhu] = 0b", i );
for ( int8_t j = 7; j >= 0; j-- )
{
printf( "%hhu", ( variablesReadFromBits[i] >> j ) & 1 );
}
printf( "\n" );
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKaW50IG1haW4oKQp7Cgl1aW50OF90IHNpemVPZkVhY2hWYXJpYWJsZUluQml0c1tdID0gezQsIDIsIDEsIDF9OwoJdWludDhfdCBudW1PZlN0b3JlZFZhcmlhYmxlcyA9IHNpemVvZihzaXplT2ZFYWNoVmFyaWFibGVJbkJpdHMpOwoJdWludDhfdCB2YXJpYWJsZXNSZWFkRnJvbUJpdHNbbnVtT2ZTdG9yZWRWYXJpYWJsZXNdOwoJdWludDhfdCByc2hDb3VudGVyID0gMDsKCQoJdWludDhfdCB0ZXN0VmFsdWUgPSAwYjEwMTAxMTEwOwoKCS8qIGV4cGVjdGVkIHJlc3VsdDoKCXZhcmlhYmxlc1JlYWRGcm9tQml0c1swXSA9IDBiMDAwMDExMTAKCXZhcmlhYmxlc1JlYWRGcm9tQml0c1sxXSA9IDBiMDAwMDAwMTAKCXZhcmlhYmxlc1JlYWRGcm9tQml0c1syXSA9IDBiMDAwMDAwMDAKCXZhcmlhYmxlc1JlYWRGcm9tQml0c1szXSA9IDBiMDAwMDAwMDEKCSovCgkKCWZvciAoIHVpbnQ4X3QgaSA9IDA7IGkgPCBudW1PZlN0b3JlZFZhcmlhYmxlczsgaSsrICkKCXsKCQl2YXJpYWJsZXNSZWFkRnJvbUJpdHNbaV0gPSAodGVzdFZhbHVlID4+IHJzaENvdW50ZXIpICYgKCgxIDw8IHNpemVPZkVhY2hWYXJpYWJsZUluQml0c1tpXSkgLSAxKTsKCQlyc2hDb3VudGVyICs9IHNpemVPZkVhY2hWYXJpYWJsZUluQml0c1tpXTsKCX0KCQoJLy8gZGlzcGxheSByZXN1bHQKCWZvciAoIHVpbnQ4X3QgaSA9IDA7IGkgPCBudW1PZlN0b3JlZFZhcmlhYmxlczsgaSsrICkKCXsKCQlwcmludGYoICJ2YXJpYWJsZXNSZWFkRnJvbUJpdHNbJWhodV0gPSAwYiIsIGkgKTsKCQkKCQlmb3IgKCBpbnQ4X3QgaiA9IDc7IGogPj0gMDsgai0tICkKCQl7CgkJCXByaW50ZiggIiVoaHUiLCAoIHZhcmlhYmxlc1JlYWRGcm9tQml0c1tpXSA+PiBqICkgJiAxICk7CgkJfQoJCQoJCXByaW50ZiggIlxuIiApOwoJfQoJCglyZXR1cm4gMDsKfQ==