Why isn't sign bit used to distinquish between signalling and non-signalling NaNs?
07:48 12 Apr 2026

A NaN in IEEE-754 has exponent as all ones and mantissa non-zero. Quiet NaNs have the most significant bit (MSB) as one, signalling NaNs have it zero. Why isn't the sign bit used instead to distinguish between signalling and non-signalling NaNs? This way the full mantissa could be used for the payload, while as it is now, every bit pattern with mantissa's MSB as one is lost.

If I'm not mistaken, the number of distinct values to be gained for signal would be: 2^(mantissa width - 1) - 1. Essentially, all the quiet NaNs would turn into signalling. (The last - 1 is there to keep one value for quietness.)

E.g, a hypothetical float with 5 bits: 1 bit sign, 1 bit exponent, 3 bit mantissa:

| bits    | type                |                                   |
|---------+---------------------+-----------------------------------|
| 0_1_000 | (positive infinity) |                                   |
| 0_1_001 | signalling NaN      |                                   |
| 0_1_010 | signalling NaN      |                                   |
| 0_1_011 | signalling NaN      |                                   |
| 0_1_100 | quiet NaN           | -> GAINED as signalling NaN       |
| 0_1_101 | quiet NaN           | -> GAINED as signalling NaN       |
| 0_1_110 | quiet NaN           | -> GAINED as signalling NaN       |
| 0_1_111 | quiet NaN           | -> GAINED as signalling NaN       |
| 1_1_000 | (negative infinity) |                                   |
| 1_1_001 | signalling NaN      |                                   |
| 1_1_010 | signalling NaN      |                                   |
| 1_1_011 | signalling NaN      |                                   |
| 1_1_100 | quiet NaN           | -> GAINED as signalling NaN       |
| 1_1_101 | quiet NaN           | -> GAINED as signalling NaN       |
| 1_1_110 | quiet NaN           | -> GAINED as signalling NaN       |
| 1_1_111 | quiet NaN           | (kept as special value for quiet) |

floating-point ieee-754