Currently my sort is not working properly because of some logic flaw in my bitwise operations.
Code:
while(index<4){
for(i=0;i<size;i++){
val=views[i]>>(index*group);
mask = val&(0xff);
printf("index=%i val=%i mask=%i views[i]=%i\n",index,val,mask,views[i]);
count[mask]++;
}
}
Here is 1 section of the output I am confused with.
Code:
index=1 val=0 mask=0 views[i]=5
index=1 val=513 mask=1 views[i]=131341
index=1 val=0 mask=0 views[i]=33
index=1 val=0 mask=0 views[i]=55
index=1 val=1562 mask=26 views[i]=400000
index=1 val=1684 mask=148 views[i]=431341
index=1 val=1218 mask=194 views[i]=312050
Why is it that ANDing 1218 with 0xff gives a higher number than ANDing 1684 with 0xff and 1562 with 0xff??
I don't understand this part and this is probably what is messing up my sort. Any suggestions, comments, or ideas?