How to Convert Signed Binary to Decimal Step by Step

Converting a signed binary number to decimal requires knowing which signing system is being used, because the same string of bits can represent different values depending on the method. The two most common systems are sign-magnitude and two’s complement, with two’s complement being the standard in virtually all modern computers.

In both systems, the leftmost bit (the most significant bit) acts as the sign bit. If it’s 0, the number is positive. If it’s 1, the number is negative. What differs is how you interpret the remaining bits to get the final decimal value.

Sign-Magnitude Conversion

Sign-magnitude is the simpler system and works the way most people would intuitively expect. The leftmost bit tells you the sign, and the remaining bits represent the number’s magnitude using standard binary place values.

To convert a sign-magnitude binary number to decimal:

  • Step 1: Look at the leftmost bit. If it’s 0, the number is positive. If it’s 1, the number is negative.
  • Step 2: Take the remaining bits (everything except the sign bit) and convert them to decimal using normal binary-to-decimal conversion.
  • Step 3: Apply the sign from Step 1.

For example, take the 8-bit binary number 1001 0110. The sign bit is 1, so the number is negative. The remaining 7 bits are 001 0110. Converting those: 0 + 0 + 16 + 0 + 4 + 2 + 0 = 22. So the decimal value is -22.

If the binary were 0001 0110 instead, the sign bit is 0, meaning positive. The remaining bits give the same magnitude of 22, so the result is simply +22.

Sign-magnitude has a quirk: it allows two representations of zero (0000 0000 for +0 and 1000 0000 for -0). This is one of the reasons modern hardware doesn’t use it for integer arithmetic.

Two’s Complement Conversion

Two’s complement is the system used by nearly every processor built in the last several decades. It handles negative numbers more elegantly and avoids the double-zero problem. The conversion process has two paths depending on whether the number is positive or negative.

If the sign bit is 0 (positive number), convert the binary to decimal the normal way. No extra steps needed. For instance, 0101 1010 starts with 0, so you just calculate: 64 + 16 + 8 + 2 = 90.

If the sign bit is 1 (negative number), follow these steps:

  • Step 1: Invert all the bits (flip every 0 to 1 and every 1 to 0).
  • Step 2: Add 1 to the inverted result.
  • Step 3: Convert the result to decimal.
  • Step 4: Attach a negative sign.

Take the 8-bit binary 1110 1100. The sign bit is 1, so this is negative. Invert all bits: 0001 0011. Add 1: 0001 0100. Convert to decimal: 16 + 4 = 20. The final answer is -20.

A Worked Example: 1001 1011

Let’s walk through a full conversion of 1001 1011 in two’s complement. The leftmost bit is 1, so the number is negative.

Invert all bits: 1001 1011 becomes 0110 0100. Now add 1 to that result: 0110 0100 + 1 = 0110 0101. Convert 0110 0101 to decimal using place values from right to left (1, 2, 4, 8, 16, 32, 64, 128): 64 + 32 + 4 + 1 = 101. Apply the negative sign, and the decimal value is -101.

The Shortcut: Weighted Bit Method

There’s a faster way to convert two’s complement numbers that doesn’t require flipping bits. Instead of treating all place values as positive, you assign a negative weight to the sign bit.

In an 8-bit number, the bit positions normally carry weights of 128, 64, 32, 16, 8, 4, 2, 1. In the two’s complement shortcut, the leftmost position carries a weight of -128 instead of +128. Then you add up all the bit values as usual.

Using 1110 1100 again: (-128) + 64 + 32 + 0 + 8 + 4 + 0 + 0 = -128 + 108 = -20. Same answer as before, in one pass.

This method works for positive numbers too. With 0101 1010: (0) + 64 + 0 + 16 + 8 + 0 + 2 + 0 = 90. The negative weight of the sign bit contributes nothing because it’s 0.

Value Ranges for Signed Binary

The number of bits determines the range of values you can represent. For an n-bit two’s complement number, the range is -2^(n-1) to 2^(n-1) – 1. In practical terms:

  • 4-bit: -8 to 7
  • 8-bit: -128 to 127
  • 16-bit: -32,768 to 32,767
  • 32-bit: roughly -2.1 billion to 2.1 billion

Notice the range isn’t symmetric. The negative side extends one number further because zero takes up one of the positive slots. In 8-bit two’s complement, 1000 0000 represents -128, and there’s no way to represent +128.

Why Sign Extension Doesn’t Change the Value

You may encounter signed binary numbers of different lengths. When you need to extend a shorter number to more bits (say, from 4-bit to 8-bit), you replicate the sign bit into the new positions on the left. This is called sign extension.

For a positive number, this is intuitive. Adding leading zeros to 0101 gives 0000 0101, which is still 5. For negative numbers, it looks less obvious but works the same way. The 4-bit value 1011 is -5 in two’s complement. Extending it to 6 bits by copying the sign bit gives 111011, which is also -5. You can verify this with the weighted bit method: -32 + 16 + 8 + 0 + 2 + 1 = -5.

If you accidentally pad a negative number with zeros instead of ones, the sign bit changes to 0 and the value becomes a completely different (positive) number. Getting sign extension right matters whenever you’re working with signed values of different bit widths.

Two’s Complement vs. Sign-Magnitude

If you’re working on a homework problem or coding exercise and aren’t told which system to use, assume two’s complement. It’s the default in C, Java, Python’s fixed-width types, and virtually all hardware. Sign-magnitude primarily comes up in educational contexts to illustrate why two’s complement was adopted.

The same binary string produces different decimals in each system. The 8-bit value 1000 0001 is -1 in sign-magnitude (sign bit 1, magnitude 000 0001 = 1). In two’s complement, inverting gives 0111 1110, adding 1 gives 0111 1111 = 127, so the value is -127. Always confirm which representation you’re working with before converting.