Developer tools

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.

IEEE 754 float bit inspector
Esc to restore

Your inputs

A decimal such as 0.1, -2, 6.02e23, inf or nan; or the bits in hex such as 0x3FB999999999999A, or in binary.

Results update as you type. Larger files run when you press Update result.

Your result

Your result will appear here.

More actions

Your inputs stay in this browser. Nothing is uploaded, and nothing is saved unless you choose “Save result”.

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
  1. 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
  2. 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
  3. 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
  4. 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
  5. 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

First 5 rows of the example result
ItemValue
Formatbinary64 (double precision): 64 bits = 1 sign + 11 exponent + 52 fraction; precision 53 bits; bias 1023
Bits (hex)0x3FB999999999999A
Bits (binary)0 01111111011 1001100110011001100110011001100110011001100110011010
ClassificationNormal
Exponentfield 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.