IEEE 754 float bit inspector
See the sign, exponent and fraction bits of a number in half, bfloat16, single, double or quadruple precision, with the exact stored value.
A clear answer. Here’s how.
Reads a decimal exactly as a fraction of whole numbers, then rounds it once to the chosen format with round to nearest, ties to even, the IEEE 754-2019 default (section 4.3.1), using BigInt arithmetic only, so binary16, bfloat16 and binary128 are handled by the same exact rule as binary32 and binary64 rather than through a double. The bits are split into sign, biased exponent and fraction (binary16: 1+5+10, bfloat16: 1+8+7, binary32: 1+8+23, binary64: 1+11+52, binary128: 1+15+112) and classified as normal, subnormal, zero, infinity or NaN (quiet when the top fraction bit is 1, the IEEE 754-2008 recommendation, with its payload). The stored value is written out as its exact decimal expansion, with the rounding error against what you typed, the unit in the last place (ULP), the neighbouring representable values and the shortest decimal that reads back to the same bits. Results larger than the format overflow to infinity and tiny ones round to a subnormal or zero, as the standard prescribes. Other rounding modes, decimal formats (decimal64), x87 80-bit extended precision and the signalling behaviour of a particular processor are not modelled.
How this is checked
5 reference checks passed These 5 cases were run when this page was built, on 20 October 2026, and all reproduce within the stated tolerance. The same cases are part of the automated tests that run on every change to Toolmoz. Engine version 1.
See the checks and where each expected answer comes from
Case 1
- Inputs
- Format binary64Value is decimalValue 0.1
- Expected, and what Toolmoz gave
- Hex bits expected 0x3FB999999999999A, Toolmoz 0x3FB999999999999AStored value (exact) expected 0.1000000000000000055511151231257827021181583404541015625, Toolmoz 0.1000000000000000055511151231257827021181583404541015625Exactly representable expected No, Toolmoz No
- Where the expected answer comes from
- CPython 3.13, an independent implementation: struct.pack with the big-endian double format, applied to 0.1 and shown as hex, = 3fb999999999999a and decimal.Decimal(0.1) = 0.1000000000000000055511151231257827021181583404541015625
- Allowed difference
- exact
Case 2
- Inputs
- Format binary32Value is decimalValue 0.1
- Expected, and what Toolmoz gave
- Hex bits expected 0x3DCCCCCD, Toolmoz 0x3DCCCCCDStored value (exact) expected 0.100000001490116119384765625, Toolmoz 0.100000001490116119384765625
- Where the expected answer comes from
- CPython 3.13: struct.pack with the big-endian single format, applied to 0.1 and shown as hex, = 3dcccccd, and decimal.Decimal of that float = 0.100000001490116119384765625
- Allowed difference
- exact
Case 3
- Inputs
- Format binary64Value is hexValue 0x0000000000000001
- Expected, and what Toolmoz gave
- Classification expected Subnormal (denormal), Toolmoz Subnormal (denormal)Stored value (scientific) expected 4.9406564584124654…×10^−324, Toolmoz 4.9406564584124654…×10^−324Shortest decimal that reads back to these bits expected 5e-324, Toolmoz 5e-324
- Where the expected answer comes from
- Wikipedia, Double-precision examples: 0000 0000 0000 0001 is 2^−1074 ≈ 4.9406564584124654 × 10^−324, the smallest positive subnormal number; ECMAScript Number::toString writes Number.MIN_VALUE as 5e-324
- Allowed difference
- exact
Case 4
- Inputs
- Format bfloat16Value is decimalValue 3.14159265358979
- Expected, and what Toolmoz gave
- Hex bits expected 0x4049, Toolmoz 0x4049Stored value (exact) expected 3.140625, Toolmoz 3.140625
- Where the expected answer comes from
- Wikipedia, bfloat16 examples: 4049 = 0 10000000 1001001 = 3.140625 ≈ π; by hand, π/2 = 1.5707… needs the 7 fraction bits 1001001 and the next bits 0000111… round down
- Allowed difference
- exact
Case 5
- Inputs
- Format binary128Value is decimalValue 3.14159265358979323846264338327950288419716939937510
- Expected, and what Toolmoz gave
- Hex bits expected 0x4000921FB54442D18469898CC51701B8, Toolmoz 0x4000921FB54442D18469898CC51701B8
- Where the expected answer comes from
- Wikipedia, Quadruple precision examples: 4000 921f b544 42d1 8469 898c c517 01b8 ≈ 3.1415926535897932384626433832795027975, the closest value to π
- Allowed difference
- exact
What this shows: the engine reproduces independently worked values for these cases. It does not prove every possible input is right. To test an answer you were given, see how to check a number; to see what is and is not checked across Toolmoz, see the accuracy ledger.
See a worked example
Worked example
A fixed demonstration, separate from the values you enter above.
- Format
- binary64 (double, 64 bits)
- Value is
- A decimal number
- Value
- 0.1
Example result
| Item | Value |
|---|---|
| Format | binary64 (double precision): 64 bits = 1 sign + 11 exponent + 52 fraction; precision 53 bits; bias 1023 |
| Bits (hex) | 0x3FB999999999999A |
| Bits (binary) | 0 01111111011 1001100110011001100110011001100110011001100110011010 |
| Classification | Normal |
| Exponent | field 1019 − bias 1023 = -4 |
Exact arithmetic with whole numbers: the typed decimal is read exactly, rounded once with round-to-nearest-even, and the stored value is written out in full. NaN payloads and the quiet bit follow the IEEE 754-2008 recommendation (quiet when the top fraction bit is 1); some older processors used the opposite convention.