8 exponent bits, no sign, no mantissa: every value is an exact power of two
Bit Layout
E8M0 is all exponent. There is no sign bit and no mantissa field, so the entire 8-bit encoding is a biased exponent and every representable value is exactly 2k.
Overview
E8M0 is the shared scale type of the OCP Microscaling (MX) Specification v1.0. An MX block is 32 elements of a narrow type (FP8 E4M3, FP8 E5M2, FP6, FP4 or MXINT8) plus one E8M0 scale that multiplies all of them. The narrow element type supplies precision; the shared scale supplies dynamic range.
Restricting the scale to an exact power of two is deliberate. Multiplying by 2k is an exponent adjustment, not a multiply, so applying a block scale costs nothing in hardware and introduces no rounding error of its own.
E8M0 has no zero and no subnormals
MX Table 7 lists Zeros as "N/A". Exponent field 0 is not reserved: it is the ordinary normal value 2-127, the smallest magnitude the format can hold. There is also no infinity. The single reserved pattern is 11111111, which is NaN.
Encoding Rules
Every Value
value = 2(exponent - 127)
Exponent fields 0 through 254 map to 2-127 through 2127, covering 255 binades with no gaps and no duplicates. That is the full supported exponent range MX Table 7 specifies, −127 to 127.
Special Values (MX Table 7)
NaN: the single pattern 11111111 (exponent field 255).
No Zero: there is no encoding for zero. A block that needs to be zero encodes that in its elements, not its scale.
No Subnormals: exponent field 0 is a normal value, so there is no gradual-underflow region.
No Infinity: overflow above 2127 saturates to 2127, or produces NaN if you select the non-saturating overflow behavior.
No Sign: a scale is always positive. Signs live in the elements.
Rounding acts on the exponent
With no mantissa field there is nothing to round within a binade, so the rounding mode chooses between neighbouring powers of two instead. Encoding 1.5 under ties-to-even gives 21; under toward-zero it gives 20.
Interactive Value Visualizer
Click any bit to flip it, drag the slider, or enter a decimal or hex value. The graph shows how values are distributed across the encoding space.
Dynamic Range & Precision
Special Values & Bit Patterns
Format Comparison
Where E8M0 Is Used
OCP Microscaling blocks: the OCP MX Spec v1.0 uses one E8M0 scale per 32-element block for MXFP8, MXFP6, MXFP4 and MXINT8.
NVIDIA Blackwell: the PTX ISA exposes block-scaled MMA instructions whose scale operand is an E8M0 byte.
ML frameworks: the ml_dtypes library provides float8_e8m0fnu as a NumPy dtype extension, and PyTorch exposes torch.float8_e8m0fnu for MX scaling.