我想检查一个无符号整数的前n位是否分别为1,是否有更好的方法,只是迭代这些位并一次检查每一位?
请参阅下面的我(强力)解决方案:
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;
}