DEV Community

Hafid Saadi
Hafid Saadi

Posted on

2's Complement 101: A Beginner's Guide

As a new programmer, you may have heard the term "2's complement" thrown around, but may not fully understand what it means. In this post, we'll explore what 2's complement is and why it's useful in computer science.

Image description

In computer systems, we often need to represent negative numbers. One way to do this is to use a system called "signed magnitude representation," in which the leftmost bit represents the sign of the number (0 for positive and 1 for negative) and the remaining bits represent the magnitude.

However, this system has a major drawback: there are two ways to represent zero (000000... for positive and 100000... for negative). This can lead to confusion and extra complexity when working with these numbers.

To solve this problem, we can use a system called "2's complement representation." In 2's complement, negative numbers are represented by the complement of their absolute value, plus 1. Confused? Let's take a closer look with an example.

Consider the number -5. In 8-bit 2's complement representation, it would be represented as follows:

  1. First, we find the binary representation of the absolute value of -5, which is 5. This is 101 in binary.

  2. Next, we take the complement of this value by flipping all of the bits. This gives us 010.

  3. Finally, we add 1 to the result. This gives us 011, which is the 2's complement representation of -5.

To convert a 2's complement number back to its original value, we can follow the reverse process:

  1. Take the complement of the number by flipping all of the bits.

  2. Add 1 to the result.

  3. If the leftmost bit is 1, the number is negative. If it is 0, the number is positive.

2's complement representation has several advantages over signed magnitude representation. It allows for easier arithmetic operations, as we only need to use the same techniques for positive and negative numbers. It also eliminates the problem of having two representations for zero.

In summary, 2's complement is a system for representing negative numbers in binary. It allows for more efficient arithmetic operations and eliminates the issue of having two representations for zero. As a new programmer, it's important to understand this concept as you may encounter it in your work.

Learn more Youtube Videos

Top comments (0)