int getBitsNeeded(int value) { assert(value >= 0, "Value must be positive"); int bits = 0; while (value > 0) { value >>= 1; bits++; } return max(1, bits); }