2's complement calculator

Supported range: 2 to 64 bits.

Working with signed binary numbers is one of those things that feels mysterious until you see the pattern. This calculator helps you convert values quickly in both directions: from decimal to two’s complement and from two’s complement back to decimal.

What is two’s complement?

Two’s complement is the most common way computers store negative integers. Instead of keeping a separate “minus sign,” the sign is encoded in the most significant bit (MSB):

  • MSB = 0 → non-negative number
  • MSB = 1 → negative number

This representation is used by CPUs, compilers, and most programming languages because it makes arithmetic hardware simpler and faster.

Why engineers prefer two’s complement

1) One adder for both addition and subtraction

Binary addition works uniformly for signed and unsigned values. You don’t need a separate subtraction circuit in the same way older signed formats did.

2) Exactly one zero

Unlike one’s complement, which has both +0 and -0, two’s complement has a single zero representation.

3) Natural overflow behavior

Arithmetic over fixed-width values wraps around modulo 2^n. This matches how register hardware behaves at the bit level.

How to convert decimal to two’s complement manually

For a negative value, the classic method is:

  1. Write the positive magnitude in binary.
  2. Pad to the desired bit width.
  3. Invert all bits (one’s complement).
  4. Add 1.

Example with 8 bits: convert -37.

  • 37 in binary: 00100101
  • Invert bits: 11011010
  • Add 1: 11011011

So -37 in 8-bit two’s complement is 11011011.

How to interpret two’s complement binary

If the leftmost bit is 0, the number is already a normal positive binary integer. If the leftmost bit is 1, the value is negative.

Fast interpretation formula for an n-bit value:

  • Let U be the unsigned value of the bits.
  • If MSB is 1, signed value is U - 2^n.
  • If MSB is 0, signed value is simply U.

Bit width and valid range

The same bit pattern means different things at different widths. Always specify the width:

  • 8-bit signed range: -128 to 127
  • 16-bit signed range: -32768 to 32767
  • 32-bit signed range: -2147483648 to 2147483647

In general, for n bits, the signed range is -2^(n-1) through 2^(n-1)-1.

Common mistakes to avoid

  • Forgetting bit width: Two’s complement depends on width.
  • Dropping leading bits: Leading zeros (or ones for sign extension) matter.
  • Mixing signed and unsigned meaning: Same bits, different interpretation.
  • Ignoring overflow: Fixed-width arithmetic wraps.

Quick practical use cases

This is useful for:

  • Computer architecture assignments
  • Embedded systems debugging
  • Bitwise operations in C/C++/Java/Python
  • Understanding integer overflow and sign extension

🔗 Related Calculators