According to this, a JavaScript number is stored as a floating point value. Isn't then an integer value also broken up into its characteristic and mantissa parts? If so, how do bitwise operators work? 100 >>1 correctly gives 50. ~2 correctly gives -3 (2's complement).
I just realize I have a 5-year old application using "bit masking". Basically I was using a 16-bit pattern to have each bit represent a different permissions role. So, values used are from 0 to 65535. It has been working fine thus far. I wonder if I need to fix that first.