First, 8,192 is the maximum CONSECUTIVE integer that SAS will store as a 3-byte field. But that storage format will also hold larger values, for instance
every even number from 8,192 to 2*8,192
every 0mod4 number from 2*8,192 to 4*8,192
etc.
BTW, it would also hold
every integer from 8,192 down to 4,096,
then every half (i.e. 0mod(0.5) from 4,096 down to 2,048
etc.
Secondly, your use of the 24 bits is thinking in terms of integer storage, but SAS uses a floating point storage format, reserving
1 bit for sign
11 bits for exponent
12 bits (=24 - 1 - 11) for mantissa (which would be 52 bits using the default 8-byte numeric storage).
For a 12 bit mantissa, the largest consecutive integer storable would be 2**13 (=8,192).
SAS stores numbers as 64 bit floating point numbers. Think of scientific notation (3.5E13) only using base 2 instead of base 10.
So part of those 64 bits are reserved for storing the magnitude. When you restrict the storage to just 3 of the 8 bytes you do NOT have 3*8 = 24 bits left for storing the actual number.
2**13 = 8,192 so 11 of the 24 bits are used to store the magnitude.
First, 8,192 is the maximum CONSECUTIVE integer that SAS will store as a 3-byte field. But that storage format will also hold larger values, for instance
every even number from 8,192 to 2*8,192
every 0mod4 number from 2*8,192 to 4*8,192
etc.
BTW, it would also hold
every integer from 8,192 down to 4,096,
then every half (i.e. 0mod(0.5) from 4,096 down to 2,048
etc.
Secondly, your use of the 24 bits is thinking in terms of integer storage, but SAS uses a floating point storage format, reserving
1 bit for sign
11 bits for exponent
12 bits (=24 - 1 - 11) for mantissa (which would be 52 bits using the default 8-byte numeric storage).
For a 12 bit mantissa, the largest consecutive integer storable would be 2**13 (=8,192).