I think I understand that m_ulRandomSeed >> RANDOM_SHIFT is the equivalent of dividing m_ulRandomSeed by 2^16. Is this right? I'm also wondering about the purpose of "comparing" m_ulRandomSeed with MAX_UNSIGNED_SHORT using &, and what it would result in... can you help me out? Thanks!
int i=1;
i=i<<1; //i=2;
i=i<<1; //=4;
i=i<<2; //=16;
i= i<<1 & 0x000000FF; //integer i can only hold a nonzero value in the (0-255) no bits will be filtered to zero in this case.
I hope this clears things up.