Nasledne kedze putbit dostane vzdy hodnotu na bite 0, mozes vyhodit to if z funkcie putbit, a rovno tam urobit OR s paramterom.while(intreader.hasLeft())
{
int num = intreader.getInt();
int q = num / M;
for (int i = 0 ; i < q; i++)
bitwriter.putBit(true); // zapíše q jedniček
bitwriter.putBit(false); // zapíše jednu nulu
// int v = 1;
for (int i = 0 ; i < log2(M); i++)
{
bitwriter.putBit( num & 0x01);
num >> 1;
}
}
Alebo cela ta druha cast sa da zoptimalizovat ptz je to len principialne nahod do bitsreamu spodnych i bitov z num, ak by si si drzal poziciu bitu a pracoval bajtovo naraz (jak som uz pisal na zaciatku ten iny pristup) tak si drzim nejaky QWORD a ulozim naraz qword |= ((num & maska[log2M]) << aktualnapoziciabitu), vyhodne je to ak je to M vyysie. Pri M=2 to nema nezmysel.