Prvo odgovor na posljednje pitanje.
Vidis ja sada radim (skoro pri kraju) na razredu za beskonacne cijelobrojne brojeve.
Da bi se dobio maksimum na brzini svih operacija (+,-,*,/, ...), brojeve predstavljam poljem bajtova na kojem mogu iskoristiti ugradjene operacije +,-,*,/,&,|,~,^ koje su maglovito brze.
Iz ovoga vidis da se uglavnom radi sa bitovima kad se radi sa brojevnim vrijednostima i enkripcijom koja se opet svodi na ovo prijasnje.
Odgovor na prvo pitanje.
Code:
n=27; // 00011011
i=7;
j=1;
Da bi zamjenio dva bita prvo moras imati masku za pristup to poziciji.
To bi izgledalo ovako:
Code:
maska_i=128; // 01000000
maska_j=1; // 00000010
Pristup bitu omogucavas sa bitovnim operatorom &, a namjestanje sa |:
Code:
tmp_i=n&maska_i;
if(n & maska_j) //ako je izlucen bit na j poziciji
n|=maska_i; // postavlja se bit na i poziciji
if(tmp_i) //ako je bio izlucen bit na j poziciji
n|=maska_j;
Poslagaj ovako bitove pa ce ti biti jasno:
00011011 &
01000000 = 00000000
00011011 &
00000010 = 00000010
itd.
Pozdrav