Week 2 & 3: Number Representations
Signed Numbers
HCA1106C Computer Architecture
Girish Mautadin
Signed Numbers
Until now we've been concentrating on unsigned
numbers. In real life we also need to be able
represent signed numbers ( like: -12, -45, +78).
A signed number MUST have a sign (+/-). A method
is needed to represent the sign as part of the binary
representation.
Two signed number representation methods are:
Sign/magnitude representation
Twos-complement representation
2
Sign/Magnitude
Representation
In sign/magnitude (S/M) representation, the
leftmost bit of a binary code represents the sign
of the value:
0 for positive,
1 for negative;
The remaining bits represent the numeric value.
Twos Complement
Representation
Another method used to represent negative
numbers (used by most modern computers)
is twos complement.
The leftmost bit STILL serves as a sign bit:
0 for positive numbers,
1 for negative numbers.
4
Twos Complement
Representation
To compute negative values using Twos
Complement representation:
1)
2)
3)
Begin with the binary representation of the
positive value
Complement (flip each bit -- if it is 0 make it
1 and visa versa) the entire positive
number
Then add one.
5
Twos Complement
Representation
Ex 1.
Find the 8-bit twos complement
representation of 610
Step 1: Find binary representation of the
positive value in 8 bits
610 = 000001102
6
Twos Complement
Representation
Ex 1 continued
Step 2: Complement the entire positive
value
Positive Value:
00000110
Complemented:
11111001
7
Twos Complement
Representation
Ex 1, Step 3: Add one to complemented
value
(complemented)
(add one)
->
->
11111001
+
1
11111010
So: -610 = 111110102
(in 8-bit 2's complement form)
Twos Complement
Representation
Ex 2. Find the 8-bit twos complement
representation of 2010
Step 1: Find binary representation of the
positive value in 8 bits
2010 = 000101002
20 is positive, so STOP after step 1!
So:
2010 = 000101002
(in 8-bit 2's complement form)
Twos Complement
Representation
Ex 3. Find the 8-bit twos complement
representation of 8010
Step 1: Find binary representation of the
positive value in 8 bits
8010 = 010100002
-80 is negative, so continue
10
Twos Complement
Representation
Ex 3
Step 2: Complement the entire positive
value
Positive Value:
01010000
Complemented:
10101111
11
Twos Complement
Representation
Ex 3, Step 3: Add one to complemented
value
(complemented) ->
(add one) -> +
So:
10101111
1
10110000
-8010 = 101100002
(in 8-bit 2's complement form)
12
Twos Complement
Representation
Alternate method -- replaces previous
steps 2-3
Step 2: Scanning the positive binary representation
from right to left,
find first one bit, from low-order (right) end
Step 3: Complement (flip) the remaining bits to the
left.
(left complemented) -->
00000110
11111010
13
Twos Complement
Representation
Ex 1: Find the Twos Complement
of -7610
Step 1: Find the 8-bit binary
representation of the positive value.
7610 = 010011002
14
Twos Complement
Representation
Step 2: Find first one bit, from low-order
(right) end, and complement the pattern to
the left.
(left complemented) ->
01001100
10110100
So: -7610 = 101101002
(in 8-bit 2's complement form)
15
Twos Complement
Representation
Ex 2: Find the Twos Complement of 7210
Step 1: Find the 8 bit binary representation
of the positive value.
7210 = 010010002
Steps 2-3: 72 is positive, so STOP after
step 1!
So:
7210 = 010010002
(in 8-bit 2's complement form)
16
Twos Complement
Representation
Ex 3: Find the Twos Complement
of -2610
Step 1: Find the 8-bit binary
representation of the positive value.
2610 = 000110102
17
Twos Complement
Representation
Ex 3, Step 2: Find first one bit, from low-
order (right) end, and complement the
pattern to the left.
00011010
(left complemented) -> 11100110
So: -2610 = 111001102
(in 8-bit 2's complement form)
18
Twos Complement
Representation
32-bit example:
0 000 0000 0000 0000 0000 0000 0000 1001
1 111 1111 1111 1111 1111 1111 1111 0111
Sign bit:
0 --> positive
1 --> negative
+9
-9
31 remaining bits for
magnitude
(i.e. value stored in twos
complement form)
19
Twos Complement to Decimal
Ex 1: Find the decimal equivalent of the
8-bit 2s complement value 111011002
Step 1: Determine if number is positive or
negative:
Leftmost bit is 1, so number is negative.
20
Twos Complement to Decimal
Ex 1,
Step 2: Find first one bit, from
low-order (right) end, and
complement the pattern to the left.
11101100
(left complemented) 00010100
21
Twos Complement to Decimal
Ex 1,
Step 3:
Determine the numeric
value:
000101002 = 16 + 4 = 2010
So:
111011002 = -2010
(8-bit 2's complement form)
22
Twos Complement to Decimal
Ex 2: Find the decimal equivalent of the
8-bit 2s complement value 010010002
Step 1: Determine if number is positive or
negative:
Leftmost bit is 0, so number is positive.
Skip to step 3.
23
Twos Complement to Decimal
Ex2, Step 3: Determine the numeric
value:
010010002 = 64 + 8 = 7210
So: 010010002 = 7210
(8-bit 2's complement form)
24
Twos Complement to Decimal
Ex 3: Find the decimal equivalent of the
8-bit 2s complement value 110010002
Step 1: Determine if number is positive
or negative:
Leftmost bit is 1, so number is negative.
25
Twos Complement to Decimal
Ex 3, Step 2: Find first one bit, from loworder (right) end, and complement the
pattern to the left.
11001000
(left complemented) 00111000
26
Twos Complement to Decimal
Ex 3, Step 3: Determine the numeric
value:
001110002 = 32 + 16 + 8 = 5610
So: 110010002 = -5610
(8-bit 2's complement form)
27
Twos Complement
Representation
Biggest reason twos complement used in most
systems today?
The binary codes can be added and subtracted
as if they were unsigned binary numbers,
without regard to the signs of the numbers
they actually represent.
28
Twos Complement
Representation
For example, to add +4 and -3, we simply add
the corresponding binary codes, 0100 and
1101:
0100 (+4)
+1101 (-3)
0001 (+1)
NOTE: A carry to the leftmost column has
been ignored.
The result, 0001, is the code for +1, which IS
the sum of +4 and -3.
29
Twos Complement
Representation
Likewise, to subtract +7 from +3:
12
0011 (+3)
- 0111 (+7)
1100 (-4)
NOTE: A phantom 1 was borrowed from
beyond the leftmost position.
The result, 1100, is the code for -4, the result
of subtracting +7 from +3.
30
Twos Complement
Representation
Summary - Benefits of Twos
Complements:
Addition and subtraction are simplified
in the twos-complement system,
-0 has been eliminated, replaced by one
extra negative value, for which there is
no corresponding positive number.
31
Valid Ranges
For any integer data representation,
there is a LIMIT to the size of number
that can be stored.
The limit depends upon number of bits
available for data storage.
32
Unsigned Integer Ranges
Range = 0 to (2n 1)
where n is the number of bits used to store
the unsigned integer.
Numbers with values GREATER than (2n 1)
would require more bits. If you try to store
too large a value without using more bits,
OVERFLOW will occur.
33
Unsigned Integer Ranges
Example: On a system that stores
unsigned integers in 16-bit words:
Range = 0 to (216 1)
= 0 to 65535
Therefore, you cannot store numbers
larger than 65535 in 16 bits.
34
Twos Complement Ranges
Range = -2(n-1) to +(2(n-1) 1)
where n is the number of bits used to store the
two-s complement signed integer.
Numbers with values GREATER than +(2(n-1) 1)
and values LESS than -2(n-1) would require
more bits. If you try to store too large/too small
a value without using more bits, OVERFLOW
will occur.
35
Twos Complement Ranges
Example: On a system that stores unsigned
integers in 16-bit words:
Range = -215 to +(215 1)
= -32768 to +32767
Therefore, you cannot store numbers larger
than 32767 or smaller than -32768 in 16 bits.
36
Using Ranges for Validity
Checking
Once you know how small/large a value
can be stored in n bits, you can use this
knowledge to check whether you
answers are valid, or cause overflow.
Overflow can only occur if you are
adding two positive numbers or two
negative numbers
37
Using Ranges for Validity
Checking
Ex 1:
Given the following 2s complement
equations in 5 bits, is the answer valid?
11111 (-1)
+11101 (-3)
11100 (-4)
Range =
-16 to +15
VALID
38
Using Ranges for Validity
Checking
Ex 2:
Given the following 2s complement
equations in 5 bits, is the answer valid?
10111 (-9)
+10101 (-11)
01100 (-20)
Range =
-16 to +15
INVALID
39
Floating Point
Numbers
40
Floating Point Numbers
Now you've seen unsigned and signed
integers. In real life we also need to be able
represent numbers with fractional parts (like: 12.5 & 45.39).
Called Floating Point numbers.
You will learn the IEEE 32-bit floating
point representation.
41
Floating Point Numbers
In the decimal system, a decimal point
(radix point) separates the whole
numbers from the fractional part
Examples:
37.25 ( whole = 37, fraction = 25/100)
123.567
10.12345678
42
Floating Point Numbers
For example, 37.25 can be analyzed as:
101
Tens
3
100
Units
7
10-1
Tenths
2
10-2
Hundredths
5
37.25 = (3 x 10) + (7 x 1) + (2 x 1/10) + (5 x 1/100)
43
Binary Equivalence
The binary equivalent of a floating point number
can be determined by computing the binary
representation for each part separately.
1) For the whole part:
Use subtraction or division method
previously learned.
2) For the fractional part:
Use the subtraction or
method (to be shown next)
multiplication
44
Fractional Part Multiplication Method
In the binary representation of a floating point
number the column values will be as follows:
25 24 23 22 21 20 . 2-1 2-2 2-3
2-4
32 16 8 4 2 1 . 1/2 1/4 1/8
1/16
32 16 8 4 2 1 . .5 .25 .125 .0625
45
Fractional Part Multiplication Method
Ex 1. Find the binary equivalent of 0.25
Step 1: Multiply the fraction by 2 until the fractional
part becomes 0
.25
x2
0.5
x2
1.0
Step 2: Collect the whole parts in forward order. Put
them after the radix point
. .5
. 0
.25 .125 .0625
1
46
Fractional Part Multiplication Method
Ex 2. Find the binary equivalent of 0.0625
Step 1: Multiply the fraction by 2 until the fractional
part becomes 0
.0625
x 2
0.125
x 2
0.50
Step 2: Collect the whole parts in
x 2
forward order. Put them after the 1.0
radix point
. .5
. 0
.25 .125 .0625
1 0
1
47
Problem storing binary form
We have no way to store the radix point!
Standards committee came up with a way
to store floating point numbers (that have
a decimal point)
48
IEEE Floating Point Representation
Floating point numbers can be stored into 32bits, by dividing the bits into three parts:
the sign, the exponent, and the mantissa.
1 2
10
32
49
IEEE Floating Point Representation
The first (leftmost) field of our floating
point representation will STILL be the
sign bit:
0 for a positive number,
1 for a negative number.
50
Storing the Binary Form
How do we store a radix point?
- All we have are zeros and ones
Make sure that the radix point is ALWAYS in
the same position within the number.
Use the IEEE 32-bit standard
the leftmost digit must be a 1
51
Solution is Normalization
Every binary number, except the one
corresponding to the number zero, can be
normalized by choosing the exponent so that the
radix point falls to the right of the leftmost 1 bit.
37.2510 = 100101.012 = 1.0010101 x 25
7.62510 = 111.1012 = 1.11101 x 22
0.312510 = 0.01012 = 1.01 x 2-2
52
IEEE Floating Point Representation
The second field of the floating point number
will be the exponent.
The exponent is stored as an unsigned 8-bit
number, RELATIVE to a bias of 127.
Exponent 5 is stored as (127 + 5) or 132
132 = 10000100
Exponent -5 is stored as (127 + (-5)) or 122
122 = 01111010
53
Try It Yourself
How would the following exponents be
stored (8-bits, 127-biased):
2-10
28
(Answers on next slide)
54
Answers
2-10
exponent
bias
28
exponent
bias
-10
+127
117
8-bit
value
01110101
8
+127
135
8-bit
value
10000111
55
IEEE Floating Point Representation
The mantissa is the set of 0s and 1s to
the right of the radix point of the
normalized (when the digit to the left of the
radix point is 1) binary number.
Ex:
1.00101 X 23
(The mantissa is 00101)
The mantissa is stored in a 23 bit field, so
we add zeros to the right side and store:
00101000000000000000000
56
Decimal Floating Point to
IEEE standard Conversion
Ex 1: Find the IEEE FP representation of
40.15625
Step 1.
Compute the binary equivalent of the
whole part and the fractional part. (i.e.
convert 40 and .15625 to their binary
equivalents)
57
Decimal Floating Point to
IEEE standard Conversion
40
- 32
8
- 8
0
So:
Result:
101000
.15625
-.12500
.03125
-.03125
.0
Result:
.00101
40.1562510 = 101000.001012
58
Decimal Floating Point to
IEEE standard Conversion
Step 2. Normalize the number by moving the
decimal point to the right of the leftmost one.
101000.00101 = 1.0100000101 x 25
59
Decimal Floating Point to
IEEE standard Conversion
Step 3. Convert the exponent to a biased
exponent
127 + 5 = 132
And convert biased exponent to 8-bit unsigned
binary:
13210 = 100001002
60
Decimal Floating Point to
IEEE standard Conversion
Step 4. Store the results from steps 1-3:
Sign
Exponent
Mantissa
(from step 3) (from step 2)
10000100
01000001010000000000000
61
Decimal Floating Point to
IEEE standard Conversion
Ex 2: Find the IEEE FP representation of 24.75
Step 1. Compute the binary equivalent of the whole
part and the fractional part.
24
- 16
8
- 8
0
Result:
11000
.75
- .50
.25
- .25
.0
Result:
.11
So: -24.7510 = -11000.112
62
Decimal Floating Point to
IEEE standard Conversion
Step 2.
Normalize the number by moving the decimal
point to the right of the leftmost one.
-11000.11 = -1.100011 x 24
63
Decimal Floating Point to
IEEE standard Conversion.
Step 3. Convert the exponent to a biased
exponent
127 + 4 = 131
==> 13110 = 100000112
Step 4. Store the results from steps 1-3
Sign
1
Exponent
10000011
mantissa
1000110..0
64
IEEE standard to Decimal
Floating Point Conversion.
Do the steps in reverse order
In reversing the normalization step move the
radix point the number of digits equal to the
exponent:
If exponent is positive, move to the right
If exponent is negative, move to the left
65
IEEE standard to Decimal
Floating Point Conversion.
Ex 1: Convert the following 32-bit binary
number to its decimal floating point
equivalent:
Sign
Exponent
Mantissa
01111101
010..0
66
IEEE standard to Decimal
Floating Point Conversion..
Step 1: Extract the biased exponent and unbias
it
Biased exponent = 011111012 = 12510
Unbiased Exponent: 125 127 = -2
67
IEEE standard to Decimal
Floating Point Conversion..
Step 2: Write Normalized number in the form:
1 . ____________
x 2
Mantissa
Exponent
----
For our number:
-1. 01 x 2 2
68
IEEE standard to Decimal
Floating Point Conversion.
Step 3: Denormalize the binary number from step 2
(i.e. move the decimal and get rid of (x 2n) part):
-0.01012
(negative exponent move left)
Step 4: Convert binary number to the FP equivalent
(i.e. Add all column values with 1s in them)
-0.01012 = - ( 0.25 + 0.0625)
= -0.312510
69
IEEE standard to Decimal
Floating Point Conversion.
Ex 2: Convert the following 32 bit binary
number to its decimal floating point
equivalent:
Sign
0
Exponent
10000011
Mantissa
10011000..0
70
IEEE standard to Decimal
Floating Point Conversion..
Step 1: Extract the biased exponent and unbias
it
Biased exponent = 10000112 = 13110
Unbiased Exponent: 131 127 = 4
71
IEEE standard to Decimal
Floating Point Conversion..
Step 2: Write Normalized number in the form:
Mantissa
1 . ____________
x 2
Exponent
----
For our number:
1.10011 x 2 4
72
IEEE standard to Decimal
Floating Point Conversion.
Step 3: Denormalize the binary number from step 2
(i.e. move the decimal and get rid of (x 2n) part:
11001.12
(positive exponent move right)
Step 4: Convert binary number to the FP equivalent
(i.e. Add all column values with 1s in them)
11001.1 = 16 + 8 + 1 +.5
= 25.510
73
Exercise
1001111.1101 convert to IEEE 32 FP
-11110010.100110 convert to IEEE 32 FP
Convert to decimal
1 10101010 11101010110..0
0 10001001 010101001110..0
74