ID:1676320
 
(See the best response by DarkCampainger.)
Why can the Bit Operators only function with 16 bits or less?
Because they're casted to unsigned short ints (uint16_t in the cstdint library) which are only 16 bits long.
In response to Pokemonred200
Best response
To add to this, all numbers in BYOND are stored as single-precision floats. A single-precision float is 32 bits, but only uses 23 bits to store the significand (the other 9 bits store the sign and exponent). Because there's no built-in "23 bit unsigned integer" in C++ for BYOND to work with, they had to use an unsigned short, which only takes advantage of the lower 16 bits.
Is there a workaround for this?
In response to Tobirachi
You could write/extend a Bignum library to support the various bitwise operators. Or if you just need 32bits, you could wrap two floats in a datum and write some bitwise operators that work between them.
You could also offload the work to a dll and pass back a string.
Dll sounds interesting.
lookup the call() entry. It has an example of a dll that can be used.