const char *p = bl.c_str();
int bits = bl.length() << 3;
while (start < bits) {
- int which_byte = start / 8;
- int which_bit = start % 8;
- unsigned char byte_mask = 1 << which_bit;
- if ((p[which_byte] & byte_mask) == 0) {
+ // byte = start / 8 (or start >> 3)
+ // bit = start % 8 (or start & 7)
+ unsigned char byte_mask = 1 << (start & 7);
+ if ((p[start >> 3] & byte_mask) == 0) {
return start;
}
++start;