Same 16 codes, very different value placement. Uniform steps vs. floating-point spacing.
Signed integer, symmetric range. Every step is the same size.
Equal spacing everywhere — the gap near 0 equals the gap near the max.
1 sign · 2 exponent · 1 mantissa. Steps grow with magnitude.
Dense near 0, sparse far out — fine steps where weights actually live.
Both use 16 codes. INT4 ticks (top) are evenly spaced; FP4 ticks (bottom) bunch up near zero.
| Property | INT4 | FP4 (E2M1) |
|---|---|---|
| Bit layout | 1 sign + 3 magnitude | 1 sign + 2 exp + 1 mantissa |
| Spacing | Uniform (additive) | Non-uniform (multiplicative) |
| Step near 0 | Same as everywhere | Small — high resolution |
| Step far from 0 | Same as everywhere | Large — coarse |
| Dynamic range | Limited (linear) | Wider (exponential) |
| Best when… | Values spread evenly | Values cluster near 0 + outliers |
| Used in | W4A16 INT kernels, GPTQ/AWQ | MXFP4 / NVFP4, next-gen HW |