Hex Two's Complement Calculator

Full step-by-step derivation, live as you type. Everything runs locally.

Outputs the final two's complement hex at the bit width currently selected above.

Batch conversion

Paste one value per line, or comma-separated. Free and unlimited — export straight to CSV.

InputOutput

Results will appear here.

Why three specific steps, and not some other procedure

The invert-then-add-one procedure isn't an arbitrary convention — it falls directly out of what two's complement is mathematically defined to be: for a negative number -N at a given bit width, its two's complement representation is defined as 2^bits minus N. Computing 2^bits minus N directly would require a subtraction from a very large power of two, but inverting every bit of N and adding 1 produces exactly the same result through simpler bit operations — inverting all bits computes (2^bits − 1) − N (since flipping every bit of a value is equivalent to subtracting it from all-ones), and adding 1 to that gives 2^bits − N, the definition. The three-step procedure is a hardware-friendly shortcut for a subtraction that would otherwise be more expensive to compute directly.

Why the process only applies to negative numbers

A non-negative number's two's complement representation is simply its ordinary binary value, padded to the chosen bit width — there's no inversion or addition involved at all, because two's complement is specifically a scheme for representing negative numbers using a fixed-width bit pattern with no separate sign symbol; positive numbers don't need any special encoding since their plain binary form already works correctly within the representable range. This is why the calculator above shows the full three-step derivation only for negative inputs, and a single "no conversion needed" note for non-negative ones.

The most negative number is its own special case

There's one value at every bit width where the invert-and-add-one process produces a result equal to the starting magnitude rather than its expected complement: the most negative representable value (-128 at 8 bits, -32,768 at 16 bits, and so on). Its magnitude, 128 at 8 bits, is 10000000 in binary — inverting gives 01111111, and adding 1 gives back 10000000, identical to where it started. This isn't an error; it reflects the fact that the most negative value has no positive counterpart at the same bit width (the range is asymmetric, as covered on thesigned integer page), so its own negation, computed the same way, simply returns itself.

Two's complement versus one's complement

One's complement — an older, now largely obsolete alternative — stops after the bit-inversion step, skipping the "add 1." That seemingly small omission has real consequences: one's complement has two distinct bit patterns for zero (all-zeros and all-ones, "positive zero" and "negative zero"), which complicates zero-comparisons and wastes a representable value, and arithmetic circuits built for one's complement need extra end-around-carry logic that two's complement's addition doesn't require. Two's complement's extra "add 1" step, despite looking like more work, is precisely what eliminates both of those problems, which is why it displaced one's complement in essentially all modern hardware.

Why bit width must be chosen before starting

Every step of this derivation depends on the declared bit width, because "invert every bit" only means something once the total number of bits is fixed. The magnitude is padded to that width before inverting, and the addition is performed within that width (discarding any carry that would overflow past the top bit, which is exactly what happens in the most-negative-value special case above). Choosing too narrow a width for a given magnitude produces an out-of-range error rather than a silently truncated or wrapped result, since a value that doesn't fit isn't representable at that width at all — there's no way to compute a two's complement representation of a number outside the declared range.

Relationship to the site's other two's-complement tools

This page exists specifically to show the derivation step by step; theHex ↔ Signed Integer converter instead goes directly from a hex bit pattern to its signed decimal value (or back) without displaying the intermediate binary steps, which is faster when only the final answer is needed. Both tools compute the same underlying relationship and will always agree on the final hex value for the same decimal input and bit width — they differ only in how much of the process is shown.

FAQ

What are the three steps to find a two’s complement?
1) Write the number’s magnitude in binary, padded to the bit width. 2) Invert every bit (one’s complement). 3) Add 1 to the inverted value — the result is the two’s complement bit pattern.
Why do positive numbers skip the invert-and-add-1 steps?
Two’s complement only changes how negative numbers are represented. A non-negative number’s bit pattern is just its plain binary value, padded to the chosen width.
Can I convert a list of numbers at once?
Yes — use the batch converter below, which outputs the final two’s complement hex for each decimal value at the bit width selected above.
g then:h homeb basee encodingc colorp programming