I want to check if the first n bits of a unsigned integer number are respectively 1 in C. Is there a better way than just iterating over the bits and checking each at a time?
See my (brute force) solution below:
bool areFirstBitsTrue(uint32_t number, uint8_t bits)
{
uint8_t i;
if(bits > sizeof(number))
{
bits = sizeof(number);
}
for(i = 0; i < bits; ++i)
{
if(! ( (number>>i) & 1) )
{
return false;
}
}
return true;
}