You should be able to replace the pow(2, x) part with (1 << x), so e.g. getbit() becomes
return (bits[n/8] & (1 << (n%8))) >> n%8;
The compiler will turn the division and modulo into shifting and masking.