Two's Complement Representation

From NovaOrdis Knowledge Base
Revision as of 00:53, 6 April 2020 by Ovidiu (talk | contribs)
Jump to navigation Jump to search

External

Internal

Overview

Two's complement is the most common signed integer representation scheme on computers. The scheme is widely used because a computer can use the same circuitry to perform addition, subtraction and multiplication, whereas otherwise they would have to be treated as separate operations. The most significant bit represents the sign: 0 for positive integers, 1 for negative integers. The value is represented using the formula shown below. Two's complement has no representation for negative zero, and thus does it not suffer from associated difficulties.

Mathematical Foundation

A two's complement encodes both positive and negative numbers in a binary number representation. Assuming that n bits are available to represent an integral value, the weight of each bit, except the most significant one, is the power of two corresponding to bit's position. The weight of the most significant bit is the negative of the corresponding power of two.

an-1 an-2 ... a2 a1 a0
                n-2
v = -an-1*2n-1 + ∑ ai2i
                i=0

Positive integers have the most significant bit 0, and use the rest n-1 bits to represent the value. Their representation is a normal binary representation, where each bit carries a weight that is the power of two of the bit's position, as explained above.

Negative integer have the most significant bit 1, and use the rest n-1 bits to represent value. To quickly find the two's complement representation of a negative number, start with the binary representation of the positive number with the same absolute value, invert the digits and add 1 to the result. The fact that this operation produces the correct result is demonstrated below.

From a practical perspective, representing a negative number in two's complement simplifies a subtraction operation, by making possible to use the same circuitry that is used for addition: assuming we want to subtract 53 from 71, which is 71 - 53, we express it as 71 + (-53), we represent -53 in two's complement by inverting the digits and adding 1, and then adding those two values.

An Example

Practical Implications

Subtraction

used by most computers to represent signed integral values such as byte, int or long.

Positive numbers

Negative numbers

The primary motivation between this scheme is that