# Converting between Binary Number Formats

## Converting between binary number formats

**Converting between binary number formats** is straightforward. Computer
Engineers need to know how to perform binary number format conversions because
the operations are a fundamental feature of all digital computers. Computer
programmers who work at the hardware/software interface level also need
knowledge of binary number conversions.

The unsigned binary format is always assumed to be positive, with no sign bit.

For example, a 4 bit number would be written this way:

1010_{2}

All 4 bits are used to encode the magnitude of the number. The above example converts to base 10 as

2** ^{3}**+ 2

**= 8 + 2 = 10**

^{1}

_{10}The range of our 4 bit unsigned binary number is always 0000** _{2}** to 1111

**or 0**

_{2}**to 15**

_{10}**.**

_{10}Consider another 4 bit binary number that includes a sign bit. Rather than 4 bits of magnitude, the number can encode only 3 bits of magnitude since one bit is given over to indicating the sign of the number. Using the same example that we used above:

1010_{2}

The bit pattern is identical. The conversion to base 10 is completely different:

(-1) * (2** ^{1}**) = 2

_{10}The leftmost bit, instead of contributing to the magnitude of the number, is an indicator of the sign of the number. In the above example, the number is negative because the leftmost bit is 1. A 0 in the leftmost bit implies the number is positive.

This format is referred to as Sign-Magnitude format.

The range of our 4 bit unsigned binary number is always 1111** _{2}** , which is -7

**, to 0111**

_{10}**, which is +7**

_{2}**.**

_{10}Sign-magnitude binary representation has a quirk. The format
has two ‘zero’ values. 1000** _{2}**
and 0000

**are both considered to be zero. Sometimes these two values are referred to as negative zero and positive zero.**

_{2}A more popular binary format is 2’s complement. Unlike sign-magnitude format, 2’s complement only has one zero value (whew). A 1 in the leftmost bit indicates a negative number, but the conversion to base 10 is not as simple as it is with sign-magnitude numbers. Recalling our previous example:

1010_{2}

To summarize the conversion process: invert all the bits and add 1.

1010_{2}** inverts to 0101. We know it’s negative because the
leftmost bit is 1.**

**0101 + 1
= 0110 = +6 _{10}.**

Apply the negative sign because the leftmost bit was 1; we
get -6_{10}.

## Conclusion

**Converting between binary number formats** has been demonstrated.