Understanding Different Binary Number Representations in Computer Systems: Sign-Magnitude, 1’s Complement Code, and 2’s Complement Code

PrimerPy
3 min readFeb 14, 2023

--

In a computer system, data is stored in the memory, which is a collection of electronic circuits that can store information in binary form (0’s and 1's). To effectively represent numbers, there are three commonly used code formats:

Sign-Magnitude

In Sign-Magnitude representation, the leftmost bit represents the sign of the number (0 for positive, 1 for negative), and the rest of the bits represent the magnitude of the number. For example, the 8-bit Sign-Magnitude representation of +10 is 00001010 and the representation of -10 is 10001010.

1’s Complement Code

In 1’s Complement Code, to represent a negative number, all the bits of the corresponding positive number are inverted (1’s become 0’s, and 0’s become 1's). For example, the 8-bit 1’s Complement Code representation of +10 is 00001010 and the representation of -10 is 11110101.

2’s Complement Code

In 2’s Complement Code, to represent a negative number, the corresponding positive number is inverted, and 1 is added to the result. This is similar to the 1’s Complement Code, but an extra 1 is added to the result. For example, the 8-bit 2’s Complement Code representation of +10 is 00001010 and the representation of -10 is 11110110.

2’s Complement Code is the most widely used representation of signed numbers in computer systems because it has several advantages over the other two representations:

  1. It allows for simple addition and subtraction operations: One of the most significant advantages of 2’s Complement Code is that it allows for simple addition and subtraction operations with both positive and negative numbers. This is because the arithmetic operations for 2’s Complement Code are the same as those for unsigned integers, which can be implemented with simple hardware circuits.
  2. It has a unique representation for zero: Unlike Sign-Magnitude and 1’s Complement Code, which have two representations for zero, 2’s Complement Code has only one representation for zero, which simplifies the logic circuitry required to handle zero values.
  3. It simplifies overflow detection: In 2’s Complement Code, the leftmost bit is reserved for the sign of the number, which means that overflow can be detected simply by examining the carry-out from the leftmost bit.
  4. It provides efficient memory utilization: 2’s Complement Code is space-efficient because it eliminates the need for a separate sign bit. This means that the same number of bits can be used to represent a wider range of numbers than other representations.
  5. It is compatible with the underlying hardware: Many computer architectures and instruction sets are designed to work specifically with 2’s Complement Code, making it the natural choice for representing signed integers in these systems.

Overall, 2’s Complement Code offers a balance of simplicity, efficiency, and compatibility, making it the preferred method for representing signed integers in most modern computer systems.

--

--

PrimerPy
PrimerPy

Written by PrimerPy

www.primerpy.com | A Primer on Python. I'm a veteran Data and Web developer based out of NYC and DC area. I blog mainly on Python and other tech related topics.