Woodstock Blog

a tech blog for general algorithmic interview questions

[Design] Two's Complement (2's Complement)

Overview

Two’s complement is a binary signed number representation.

Negative values are taken by subtracting the number from 2n. This is the most common method of representing signed integers on computers.

Example

So basically ‘1111 1111’ means -1, and ‘1000 0000’ means -128.

Special case

In java, minimum integer = -2147483648, which is “10000000000000000000000000000000”. If we negative this value, we still get -2147483648!

public void solve(int A) {
    System.out.println(A);
    System.out.println(Integer.toBinaryString(A));
    System.out.println(A * -1);
    System.out.println(Integer.toBinaryString(-1 * A));
    System.out.println(-A);
}

We get:

-2147483648
10000000000000000000000000000000
-2147483648
10000000000000000000000000000000
-2147483648