Download - Faculty of Computer Science © 2006 CMPUT 229 Representing Information Numbers, Numbers, and Numbers
Faculty of Computer Science
CMPUT 229 © 2006
Representing Information
Numbers, Numbers, and Numbers
© 2006
Department of Computing Science
CMPUT 229
Slide’s source
Yale N. Patt and Sanjay J. Patel, Introduction to Computing Systems: From bits & gates to C & Beyond, McGrawHill Press, 2001, Chapter2.
© 2006
Department of Computing Science
CMPUT 229
Positional Number System
329 923
329
923
9 2 3
9 23
329 923
© 2006
Department of Computing Science
CMPUT 229
Positional Number System
329 923
3102 + 2101 + 9100 9102 + 2101 + 3100
3100 + 210 + 91 9100 + 210 + 31
300 + 20 + 9 900 + 20 + 3
923329
© 2006
Department of Computing Science
CMPUT 229
Positional Number System
32913 92313
3132 + 2131 + 9130 9132 + 2131 + 3130
316910 + 21310 + 9110 916910 + 21310 + 3110
50710 + 2610 + 910 152110 + 2610 + 310
The same positional system works with different basis:
15501054210
© 2006
Department of Computing Science
CMPUT 229
Binary System
1102 92316
122 + 121 + 020 9162 + 2161 + 3160
1410 + 1210 + 0110 925610 + 21610 + 3110
410 + 210 + 010 230410 + 3210 + 310
In computers we are mostly interested on bases 2, 8, and 16.
233910610
© 2006
Department of Computing Science
CMPUT 229
Signed Integers
– Problem: given 2k distinct patterns of bits, each pattern with k bits, assign integers to the patterns in such a way that:
• The numbers are spread in an interval around zero without gaps.
• Roughly half of the patterns represent positive numbers, and half represent negative numbers.
• When using standard binary addition, given an integer n, the following property should hold:
pattern(n+1) = pattern(n) + pattern(1)
© 2006
Department of Computing Science
CMPUT 229
Sign-Magnitude Representation
Value Represented Pattern Sign Magnitude
0000 0 0001 1 0010 2 0011 3 0100 4 0101 5 0110 6 0111 7 1000 1001 1010 1011 1100 1101 1110 1111
In a sign-magnitude representation weuse the first bit of the pattern to indicateif it is a positive or a negative number.
© 2006
Department of Computing Science
CMPUT 229
Sign-Magnitude Represetation
Value Represented Pattern Sign Magnitude
0000 0 0001 1 0010 2 0011 3 0100 4 0101 5 0110 6 0111 7 1000 1001 -1 1010 -2 1011 -3 1100 -4 1101 -5 1110 -6 1111 -7
What do we do with the pattern 1000?
© 2006
Department of Computing Science
CMPUT 229
Sign-Magnitude Representation
Value Represented Pattern Sign Magnitude
0000 0 0001 1 0010 2 0011 3 0100 4 0101 5 0110 6 0111 7 1000 -0 1001 -1 1010 -2 1011 -3 1100 -4 1101 -5 1110 -6 1111 -7
Having two patterns to represent0 is wasteful.
The sign-magnitude representationhas the advantage that it is easy toread the value from the pattern.
But does it have the binary arithmetic property?
For instance, what is the resultof pattern(-1) + pattern(1)?
1001 pattern(-1)+ 0001 pattern(1) ??
PattPatel, pp. 20
© 2006
Department of Computing Science
CMPUT 229
Sign-Magnitude RepresentationHaving two patterns to represent0 is wasteful.
The sign-magnitude representationhas the advantage that it is easy toread the value from the pattern.
But does it have the arithmetic property?
For instance, what is the resultof pattern(-1) + pattern(1)?
1001 pattern(-1)+ 0001 pattern(1) 1010 = ??
Value Represented Pattern Sign Magnitude
0000 0 0001 1 0010 2 0011 3 0100 4 0101 5 0110 6 0111 7 1000 -0 1001 -1 1010 -2 1011 -3 1100 -4 1101 -5 1110 -6 1111 -7
PattPatel, pp. 20
© 2006
Department of Computing Science
CMPUT 229
Sign-Magnitude Representation
Value Represented Pattern Sign Magnitude
0000 0 0001 1 0010 2 0011 3 0100 4 0101 5 0110 6 0111 7 1000 -0 1001 -1 1010 -2 1011 -3 1100 -4 1101 -5 1110 -6 1111 -7
Having two patterns to represent0 is wasteful.
The sign-magnitude representationhas the advantage that it is easy toread the value from the pattern.
But does it have the arithmetic property?
For instance, what is the resultof pattern(-1) + pattern(1)?
1001 pattern(-1)+ 0001 pattern(1) 1010 = pattern(-2)
PattPatel, pp. 20
© 2006
Department of Computing Science
CMPUT 229
1’s-Complement Representation
Value Represented Pattern Sign Magnitude 1’s complement
0000 0 0 0001 1 1 0010 2 2 0011 3 3 0100 4 4 0101 5 5 0110 6 6 0111 7 7 1000 -0 -7 1001 -1 -6 1010 -2 -5 1011 -3 -4 1100 -4 -3 1101 -5 -2 1110 -6 -1 1111 -7 -0
A negative number is representedby “flipping” all the bits of a positivenumber.
We still have two patterns for 0.
It is still easy to read a value froma given pattern.
How about the arithmetic property?
Suggestion: try the following-1 + 1 = ??-0 + 1 = ?? 0 + 1 = ??
PattPatel, pp. 20
© 2006
Department of Computing Science
CMPUT 229
2’s-Complement Representation
Value Represented Pattern Sign Magnitude 1’s complement 2’s complement
0000 0 0 0 0001 1 1 1 0010 2 2 2 0011 3 3 3 0100 4 4 4 0101 5 5 5 0110 6 6 6 0111 7 7 7 1000 -0 -7 -8 1001 -1 -6 -7 1010 -2 -5 -6 1011 -3 -4 -5 1100 -4 -3 -4 1101 -5 -2 -3 1110 -6 -1 -2 1111 -7 -0 -1
A single pattern for 0.
1111 pattern(-1)+ 0001 pattern(1) 0000 = pattern(0)
It holds the arithmetic property.
But the reading of a negative pattern is not trivial.
PattPatel, pp. 20
© 2006
Department of Computing Science
CMPUT 229
Binary to Decimal Conversion
Problem: Given an 8-bit 2’s complement binary number:
a7 a6 a5 a4 a3 a2 a1 a0 find its corresponding decimal value.
Because the binary representation has8 bits, the decimal value must be in the [-27; +(27-1)] =[-128;+127] interval.
PattPatel, pp. 23
© 2006
Department of Computing Science
CMPUT 229
if (negative = true)then
Binary to Decimal Conversion
a7 a6 a5 a4 a3 a2 a1 a0
Solution: negative false if (a7 = 1) then negative true flip all bits; compute magnitude using:
00
11
22
33
44
55
66 2222222 ×+×+×+×+×+×+×= aaaaaaaV
VV
VV
−←+← 1
PattPatel, pp. 24
© 2006
Department of Computing Science
CMPUT 229
Binary to Decimal Conversion (Examples)
Convert the 2’s complement integer 11000111 to itsdecimal integer value.
1. a7 is 1, thus we make a note that this is a negative number and invert all the bits, obtaining: 00111000
2. We compute the magnitude:
56000816320
10204081161321640
20202021212120 0123456
=++++++=×+×+×+×+×+×+×=
×+×+×+×+×+×+×=V
3. Now we remember that it was a negative number, thus:57 ;57156 −==+= VV
PattPatel, pp. 24
© 2006
Department of Computing Science
CMPUT 229
Decimal to Binary Convertion
We will start with an example. What is the binaryrepresentation of 10510?
00
11
22
33
44
55
66 2222222105 ×+×+×+×+×+×+×= aaaaaaa
Our problem is to find the values of each ai
Because 105 is odd, we know that a0 = 1
Thus we can subtract 1 from both sides to obtain:
11
22
33
44
55
66 222222104 ×+×+×+×+×+×= aaaaaa
PattPatel, pp. 24
© 2006
Department of Computing Science
CMPUT 229
Decimal to Binary Convertion (cont.)
11
22
33
44
55
66 222222104 ×+×+×+×+×+×= aaaaaa
Now we can divide both sides by 2
01
12
23
34
45
56 22222252 ×+×+×+×+×+×= aaaaaa
Because 52 is even, we know that a1 = 0
12
23
34
45
56 2222252 ×+×+×+×+×= aaaaa
02
13
24
35
46 2222226 ×+×+×+×+×= aaaaa a2 = 0
13
24
35
46 222226 ×+×+×+×= aaaa
03
14
25
36 222213 ×+×+×+×= aaaa a3 = 1
14
25
36 22212 ×+×+×= aaa
PattPatel, pp. 24
© 2006
Department of Computing Science
CMPUT 229
Decimal to Binary Convertion (cont.)
14
25
36 22212 ×+×+×= aaa
04
15
26 2226 ×+×+×= aaa a4 = 0
15
26 226 ×+×= aa
05
16 223 ×+×= aa a5 = 1
16 22 ×=a
06 21 ×=a a6 = 1
Thus we got:a1 = 0a4 = 0a5 = 1a6 = 1 a2 = 0a3 = 1 a0 = 1
10510 = 011010012
PattPatel, pp. 25
© 2006
Department of Computing Science
CMPUT 229
Decimal to Binary Conversion (Another Method)
We can also use repeated long division:
105/2 = 52 remainder 1
52/2 = 26 remainder 0
26/2 = 13 remainder 0
13/2 = 6 remainder 1
6/2 = 3 remainder 0
3/2 = 1 remainder 1
1/2 = 0 remainder 1
© 2006
Department of Computing Science
CMPUT 229
Decimal to Binary Conversion (Another Method)
We can also use repeated long division:
105/2 = 52 remainder 1
52/2 = 26 remainder 0
26/2 = 13 remainder 0
13/2 = 6 remainder 1
6/2 = 3 remainder 0
3/2 = 1 remainder 1
1/2 = 0 remainder 1
rightmost digit
10510 = 011010012
© 2006
Department of Computing Science
CMPUT 229
Decimal to Binary Conversion (Negative Numbers)
What is the binary representation of -10510 in 8 bits?
We know from the previous slide that:+10510 =011010012
To obtain the binary representation of a negativenumber we must flip all the bits of the positive
representation and add 1:
10010110+ 00000001
10010111
Thus:-10510 =100101112
PattPatel, pp. 22-23
© 2006
Department of Computing Science
CMPUT 229
Hexadecimal Numbers (base 16)
Binary Decimal Hexadecimal 0000 0 0 0001 1 1 0010 2 2 0011 3 3 0100 4 4 0101 5 5 0110 6 6 0111 7 7 1000 8 8 1001 9 9 1010 10 A 1011 11 B 1100 12 C 1101 13 D 1110 14 E 1111 15 F
If the number $FACE representsa 2’s complement binary number,
what is its decimal value?
In the 68K assembler, by convention, the character $
is printed in front of an hexadecimalnumber to indicate base 16.
First we need to look up the binaryrepresentation of F, which is 1111.
Therefore $FACE is a negative number, and we have to flip all the bits.
PattPatel, pp. 26-27
© 2006
Department of Computing Science
CMPUT 229
Hexadecimal Numbers (base 16)
Binary Decimal Hexadecimal 0000 0 0 0001 1 1 0010 2 2 0011 3 3 0100 4 4 0101 5 5 0110 6 6 0111 7 7 1000 8 8 1001 9 9 1010 10 A 1011 11 B 1100 12 C 1101 13 D 1110 14 E 1111 15 F
It is best to write down the binaryrepresentation of the number first:
$FACE = 1111 1010 1100 1110
Now we flip all the bits and add 1: 0000 0101 0011 0001 + 0000 0000 0000 0001 0000 0101 0011 0010 = $0532
Then we convert 0x0532 from base 16 to base 10:
$0532 = 0163 + 5162 + 3161 + 2160
= 0 + 5256 + 316 + 21
= 1280 + 48 + 2
= 133010
$FACE = -133010
PattPatel, pp. 26-27
© 2006
Department of Computing Science
CMPUT 229
Binary Arithmetic
Decimal
19+ 3
22
Binary
010011+ 000011
010110
Decimal
14- 9
5
Binary
001110+ 110111
000101
910 = 0010012
-910 = 1101112
PattPatel, pp. 25
© 2006
Department of Computing Science
CMPUT 229
Overflow
What happens if we try to add +9 with +11 in a 5-bit 2-complementrepresentation?
Decimal
9+ 11
20
Binary
01001+ 01011
10100 = -12 ?
The result is too large to represent in 5 digits, i.e. it is larger than 01111 = +1510.
When the result is too large for the representationwe say that the result has OVERFLOWed the
capacity of the representation.
PattPatel, pp. 27
© 2006
Department of Computing Science
CMPUT 229
Overflow Detection
What happens if we try to add +9 with +11 in a 5-bit 2-complementrepresentation?
Decimal
9+ 11
20
Binary
01001+ 01011
10100 = -12 ?
We can easily detect the overflow by detecting that theaddition of two positive numbers resulted in a negative result.
PattPatel, pp. 28
© 2006
Department of Computing Science
CMPUT 229
Overflow (another example)
Could overflow happen when we add two negative numbers?
Decimal
- 12+ -6-18
Binary
10100+ 11010
01110 = +14 ?
Again we can detect overflow by detecting that weadded two negative numbers and got a positive result.
Could we get overflow when adding a positive anda negative number?
PattPatel, pp. 28
© 2006
Department of Computing Science
CMPUT 229
Sign-extension
What is the 8-bit representation of +510?
0000 0101
What is the 16-bit representation of +510?
0000 0000 0000 0101
What is the 8-bit representation of -510?
1111 1011
What is the 8-bit representation of -510?
1111 1111 1111 1011
PattPatel, pp. 27
© 2006
Department of Computing Science
CMPUT 229
Sign-extension
What is the 8-bit representation of +510?
0000 0101
What is the 16-bit representation of +510?
0000 0000 0000 0101
What is the 8-bit representation of -510?
1111 1011
What is the 8-bit representation of -510?
1111 1111 1111 1011
To sign-extend anumber to a largerrepresentation, allwe have to do is toreplicate the sign bituntil we obtain the
new length.
PattPatel, pp. 27
© 2006
Department of Computing Science
CMPUT 229
Some Useful Numbers to Remember
20 = 110 = $0001
21 = 210 = $0002
22 = 410 = $0004
23 = 810 = $0008
24 = 1610 = $0010
25 = 3210 = $0020
26 = 6410 = $0040
27 = 12810 = $0080
28 = 25610 = $0100
29 = 51210 = $0200
210 = 102410 = 0100 0000 0000 =$0400 = 1K
220 = 210 × 210 = 102410 × 102410 = 0001 0000 0000 0000 0000 0000 =
$0010 0000 = 1M
230 = 210 × 210 × 210 = 1 G
240 = 210 × 210 × 210 × 210 = 1 T
© 2006
Department of Computing Science
CMPUT 229
Data and Addresses
“She is 104.”
“I am staying at 104.”
“It costs 104.”
“There is 104.”
“My office is 104.”
“Stop in front of 104.”
“My house is 104.”
In each case, how do we know what 104 is?
From the context in which it is used! The same is true fordata and addresses. The samenumber is data on one instanceand address on another.
“Write 100 at $0780.”
“Write 100 at 100.”
© 2006
Department of Computing Science
CMPUT 229
Representing Fractions
In base 10 we know that:
+0.10510 = 10510/100010 = 10510/103
Fractions are represented in a similar fashion in base 2:
+0.101012 = 101012/1000002 = 101012/25
101012 = 2110 and 25 = 32, thus
0.101012 = 2110/3210 = 0.6562510
Clements, pp. 152
© 2006
Department of Computing Science
CMPUT 229
Fractions: Binary to Decimal
Another way to convert a binary fraction into
a decimal value is as follows:
0.101012 = 12-1 + 02-2 + 12-3 + 02-4 + 12-5
= 10.5 + 00.25 + 10.125 + 00.0625 +
10.03125
= 0.5 + 0.125 + 0.03125
= 0.65625
© 2006
Department of Computing Science
CMPUT 229
Fractions: Decimal to Binary
The following method works to convert decimal factions
to binary: 0.687510 = ??2
0.6875 2 = 1.3750
0.3750 2 = 0.7500
0.7500 2 = 1.5000
0.5000 2 = 1.0000
0.0000 2 Done!
0.687510 = 0.10112
© 2006
Department of Computing Science
CMPUT 229