Numeral Systems, BigInt & Exact Integer Representation
Understand how binary, decimal, and hexadecimal can represent the same integer, where JavaScript Number stops being a safe exact-integer representation, and why Calzivo uses BigInt-backed arithmetic for its accepted integer-conversion workflows.
Published: October 6, 2026
Open Binary Converter
Quick answer
In short
- Representation: Binary, decimal, and hexadecimal can write the same integer with different bases and digit sets.
- Safe Number boundary: ECMAScript defines Number.MAX_SAFE_INTEGER as 9,007,199,254,740,991 (2^53 − 1); larger integer magnitudes are not guaranteed to stay exactly distinguishable as Number values.
- Calzivo execution: The current radix converters use BigInt-backed arithmetic for accepted non-negative whole integers.open Binary Converter
One integer can have several numeral-system representations
A numeral system is a way to write a value. Decimal uses base 10, binary uses base 2, and hexadecimal uses base 16. Changing the representation does not change the integer itself: it changes the symbols and place values used to write it.
In a positional numeral system, each digit contributes its digit value multiplied by a power of the base.
Decimal 42 = binary 101010 = hexadecimal 2A. Decimal 255 = binary 11111111 = hexadecimal FF.
Digit sets and place value
- Binary is base 2 and uses digits 0 and 1.
- Decimal is base 10 and uses digits 0 through 9.
- Hexadecimal is base 16 and uses digits 0 through 9 plus A through F for digit values 10 through 15.
- A digit’s contribution depends on its position, so the same character can represent different amounts in different positions.
Canonical notation and leading zeros
Leading zeros do not change a non-negative integer value. For the same value, binary 00101010 and 101010 represent the same integer, while hexadecimal 002A and 2A do the same. Calzivo’s current integer converters accept leading zeros in their documented scope and return canonical output without unnecessary leading zeros.
Why JavaScript Number has a safe-integer boundary
ECMAScript defines a safe integer as an integer whose Number value is not shared with another integer. Number.MAX_SAFE_INTEGER is 9,007,199,254,740,991, which is 2^53 − 1. Beyond that safe range, Number values are not guaranteed to represent every integer exactly or distinguish adjacent integers.
The ECMAScript specification notes that 9,007,199,254,740,992 and 9,007,199,254,740,993 evaluate to the same Number value. That is why exact large-integer conversion should not rely on ordinary Number parsing alone.
What BigInt changes
ECMAScript defines BigInt as an integer type whose value may be any size and is not limited to a particular bit width. In the operations relevant to these converters, that lets accepted integer values remain exact instead of being rounded through the Number safe-integer boundary.
The ECMAScript BigInt type can represent negative integers too. Calzivo’s current radix converters intentionally expose a narrower product contract: non-negative whole integers only, with route-specific rules for prefixes, grouping, whitespace, signs, fractions, and output formatting.
Signed and fixed-width interpretation is a separate job
A bit string such as 11111111 can mean 255 as an unsigned eight-bit value, or a different value under a signed fixed-width convention. The current Calzivo radix tools do not silently choose a signed width or two’s-complement interpretation. They convert accepted non-negative integer values between representations.
Use the Tool when you need conversion, not just the concept
This Knowledge page explains the representation and exactness model. Use Binary Converter for binary↔decimal, or the specialist binary↔hex and decimal↔hex Tools when you want the actual conversion and input validation.
Numeral systems and exact integers
Is hexadecimal a different kind of number from decimal?
No. Hexadecimal and decimal are different representations. The same integer can be written in either base.
Why can JavaScript Number lose integer exactness?
Number uses a finite floating-point representation. ECMAScript defines 2^53 − 1 as the maximum safe integer, and larger integer magnitudes are not guaranteed to remain exactly distinguishable.
Does BigInt mean every Calzivo converter accepts negative numbers?
No. BigInt as a language type can represent negative integers, but the current Calzivo radix converters intentionally accept non-negative whole integers only.
Why are 0b and 0x prefixes not always accepted?
Prefix handling is an input-grammar choice, not a property of the integer itself. The current Calzivo converters document route-specific accepted syntax and reject unsupported prefixes rather than silently normalizing them.
Reference check
Sources and references
These references provide background context for the topic. They do not replace professional advice or official documents.
- ECMAScript Language Specification: The BigInt Type
Ecma International / TC39
- ECMAScript Language Specification: Number.MAX_SAFE_INTEGER
Ecma International / TC39
Binary, decimal, and hexadecimal are representations of integer values. Use place value to understand the notation, use the Number safe-integer boundary to understand precision risk, and use BigInt-backed conversion when accepted large integers must remain exact.
Use the tool instead
Use the matching calculator when you want to plug in your own numbers and get a result faster.
Open ConverterRelated Tools
Related Reading
More related reading coming soon!
