To jest algorytm dzielenia przez 2, elementy dst reprezentują cyfry liczby, wydaje mi się, że jest jakiś błąd z przeniesieniem.
Próbowałem tutaj wykorzystać fakt ze >>1 to dzielenie przez 2, a moje cyfry sa 31 bitowe. Te <<30 to taki skrot, zamiast najpierw przesuniecia o <<31 i potem >>1, wykorzystuje tutaj wieksza precyzje, ale jednak cos robie zle, ktos podpowie?
long c=0, t=0;
for(int i=len-1; i>=0; i--){
c+=(long)(dst[i])<<30;
t=c>>31;
dst[i]=(int)t;
c&=0x7FFFFFFF;
}