eolas/zk/Twos_complement.md
2024-03-20 07:40:03 +00:00

2.4 KiB

id title tags created
gktb Two's complement
Tuesday, March 19, 2024

Two's complement

Summary

  • Two's complement is a method for representing signed numbers (negative integers) in binary.

  • The two's complement of a given binary integer is its negative equivalent.

Detail

Procedural steps

Two's complement divides the available word length (see Binary_encoding) into two subsets: one for negative integrs and one for positive integers.

Take the binary encoding of decimal five (0101). Its complement is 1011.

The procedure for deriving the complement is as follows.

To derive the complement of an unsigned number:

  1. Take the unsigned number and invert its digits: 0 becomes 1, 1 becomes 0
  2. Add one

To derive the unsigned equivalent of a signed number you invert the process but still make the smallest digit 1:

Formal expression

2^n - x

  • where x is the negative integer in binary that we wish to derive
  • where n is the word length of the binary system in bits.

Applied to the earlier example we have 2^4 -5 which is:

16 - 5 = 11

When we convert the decimal 11 to binary we get 1011 which is identical to the signed version of the unsigned integer.

We can confirm the correctness of the derviation by summing the signed and unsigned binary values. If this results in zeros (ignoring the overflow bit), the derivation is correct as the two values effectively cancel each other out:

1011 + 0101 = 0000

Advantages

  • The circuit implementation of arithmetic involving positive and negative integers is the same as the implementation of positive integers. There is no need for additional harware or special handling of the values.
  • This can be contrasted with the alternative approaches to signing numbers such as signed magnitude representation which uses certain bits as designators of negative/positive status.

Limitations

  • Two's complement reduces the overall informational capacity of the given binary word length, effectively halving the total number of unique values.

  • In a 4-bit system instead of 16 total unique encodings of integers you have 8 encodings for positive integers and 8 encodings for the their signed equivalent.

Signed_and_unsigned_numbers