Convert a value in real time across positional bases (binary, octal, decimal, hex, any base 2–36) and alphabetic numeral systems (Roman, Hebrew gematria, Greek). Every field is editable — type in any one and the rest update. Also includes an IEEE 754 Float32/Float64 bit inspector and fixed-width bitwise AND/OR/XOR/NOT/shift on two values.
Arbitrary precision via BigInt — integers of any size are supported. A negative sign is allowed.
Digits use 0–9 then A–Z. Base 32 and base 36 are common for short IDs and compact encodings.
Interpreting {{ decNum }} as a {{ floatWidth }}-bit float:
A: not a valid decimal, 0x hex, or 0b binary value.
B: not a valid decimal, 0x hex, or 0b binary value.
⚠ A ({{bwAParsed}}) does not fit in {{bwWidth}}-bit {{bwSigned?'signed':'unsigned'}} — wrapped to {{bwReport.a.dec}}.
⚠ B ({{bwBParsed}}) does not fit in {{bwWidth}}-bit {{bwSigned?'signed':'unsigned'}} — wrapped to {{bwReport.b.dec}}.
⚠ A << {{bwShift}} shifted a set bit past bit {{bwWidth-1}} — that bit is lost, not an error, just worth knowing.
Positional bases (binary, octal, decimal, hexadecimal, and any base 2–36) express a value as a sum of digit × baseposition. Conversion here is exact for integers of any magnitude using JavaScript BigInt.
Roman numerals are additive/subtractive and have no zero, so this tool covers the standard 1–3999. Input is validated by round-trip: non-canonical forms such as IIII or IC are rejected.
Hebrew gematria assigns numeric values to letters (א=1 … ת=400). Numbers are additive; 15 and 16 are written ט״ו and ט״ז to avoid spelling a divine name. Thousands are marked with a geresh. This is the same system used for Hebrew calendar years (e.g. ה׳תשפ״ד = 5784). A bare multiple of 1000 (e.g. ה׳) is inherently ambiguous with its single-letter value, so reading one back resolves to the smaller number.
Greek (Ionian/Milesian) numerals use 27 letters — including the archaic digamma (ϛ), koppa (ϙ) and sampi (ϡ) — grouped as units, tens and hundreds. A keraia marks the value as a number; a low keraia before a letter multiplies it by 1000.
Bitwise operations run on a fixed-width, two's-complement representation: pick 8/16/32/64 bits, and each operand is first masked (and flagged as overflowing) to that width before AND/OR/XOR/NOT and shifting are applied. Signed mode shows the wrapped pattern's two's-complement value; the right shift is arithmetic (sign-extending) when signed and logical (zero-filling) when unsigned. The byte view respects the endianness toggle — big-endian lists the most significant byte first (network order), little-endian the least significant first (x86/ARM memory order) — the underlying numeric value is unaffected either way.
Everything runs client-side in your browser — no value ever leaves the page.