<< Chapter < Page | Chapter >> Page > |
The ones complement of a number is represented by flipping the number's bits one at a time. For example, the value 01001001 becomes 10110110.
Suppose you are working with B-bit numbers. Then the ones complement for the number N is -1 -N
The twos complement of a number N in a B-bit system is -N.
There is a simple way to calculate a twos complement value: invert the number's bits and then add 1.
For a concrete example, consider the value 17 which is 00010001 in binary. Inverting gives 11101110. Adding one makes this 11101111.
Like sign magnitude, twos complement representation uses the most significant bit as a sign bit, making it easy to test whether an integer is positive or negative. It differs from the use of the sign-magnitude representation in the way that the other bits are interpreted.
Consider an n-bit integer. A, in twos complement representation. If A is positive, then the sign bit an-1 is zero. The remaining, bits represent the magnitude of the number in the same fashion as for sign magnitude:
If
The number zero is identified as positive and therefore has a 0 sign bit and a magnitude of all 0s. We can see that the range of positive integers that may he represented is from 0 (all of the magnitude bits are 0) through- 1 (all of the magnitude bits are 1). Any larger number would require more bits.
For a negative number A (A<0), the sign bit,is one. The remaining n-1 bits can take on any one of values. Therefore, the range of negative integers that can be represented is from -1 to -
This is the convention used in twos complement representation, yielding the following expression for negative and positive numbers:
The range of A is from - to -1.
Example: Using 8 bit to represent
+50= 0011 0010
-70=1011 1010
The rule for twos complement integers is to move the sign hit to the new leftmost position and fill in with copies of the sign bit. For positive numbers, fill in with zeros, and for negative numbers, till in with ones.
For example:
+18 = 00010010
+18 = 00000000 00010010
-18 = 10010010
-18 = 11111111 10010010
In sign-magnitude representation, the rule for forming the negation of an integer is simple: Invert the sign bit.
In twos complement representation, the negation of an integer can he formed with the following rules:
1. Take the Boolean complement of each bit of the integer (including the sign bit). That is. set each 1 to 0 and each 0 to 1.
2. Treating the result as an unsigned binary integer, add 1.
This two-step process is referred to as the twos complement operation, or the taking of the twos complement of an integer
Example:
Negation Special Case 1:
0 = 00000000
Bitwise not 11111111
Add 1 to LSB +1
Result 1 00000000
Overflow is ignored, so: - 0 = 0
Negation Special Case 2:
-128 = 10000000
bitwise not 01111111
Add 1 to LSB +1
Result 10000000
Notification Switch
Would you like to follow the 'Computer architecture' conversation and receive update notifications?