Download EXAM 1 - Department of Computer and Information Science

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
Department of Computer and Information Science,
School of Science, IUPUI
CSCI 230
Information Representation:
Negative and Floating Point Representation
Dale Roberts, Lecturer
IUPUI
[email protected]
Dale Roberts
Negative Numbers in Binary
Four different representation schemes are used
for negative numbers
1. Signed Magnitude
Left most bit (LMB) is the sign bit :
0  positive (+)
1  negative (-)
Remaining bits hold absolute magnitude
Example:
210  0000 0010b
Try, 1000 0100b = -410
-210  1000 0010b
Q: 0000 0000 = ?
1000 0000 = ?
Dale Roberts
2. One’s Compliment
– Left most bit is the sign bit :
•
•
0  positive (+)
1  negative (-)
– The magnitude is complimented
Example:
210  0 000 0010b
-210  1 111 1101b
Exercise: try - 410 using 1’s compliment
Q: 0000 0000 = ?
1111 1111 = ?
Solution:
410 = 0 000 0100
-410 = 1 111 1011
b
b
Dale Roberts
Negative Numbers in Binary (cont.)
3. 2’s Compliment
• Sign bit same as above
• Magnitude is complimented first and a “1” is added to
the complimented digits
Example:
210  0 000 0010b
1’s compliment  1 111 1101b
+
1
-210  1 111 1110b
Exercise: try -710 using 2’s compliment
710  0000 0111
b
1’s compliment  1111 1000b
+
1
-710  1111 1001b
Dale Roberts
Negative Numbers in Binary (cont.)
Example: 7+(-3)
[hint]: A – B = A + (~B) +1
710 = 0000 0111b
310 = 0000 0011b
1’s complement 1111 1100
b
2’s complement 1111 1101  -3
10
b
7+(-3) 
0000 0111
+1111 1101
1 1111 111 carry
ignore 1 0000 0100  0000 0100  410
Dale Roberts
Three Representation of Signed Integer
Representation
0 0000
0 0001
0 0010
0 0011
0 0100
0 0101
0 0110
0 0111
0 1000
0 1001
0 1010
0 1011
0 1100
0 1101
0 1110
0 1111
1 0000
1 0001
1 0010
1 0011
1 0100
1 0101
1 0110
1 0111
1 1000
1 1001
1 1010
1 1011
1 1100
1 1101
1 1110
1 1111
Value Representation
Signed Magnitude
1's Complement 2's Complement
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
-0
-1
-2
-3
-4
-5
-6
-7
-8
-9
-10
-11
-12
-13
-14
-15
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
-15
-14
-13
-12
-11
-10
-9
-8
-7
-6
-5
-4
-3
-2
-1
-0
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
-16
-15
-14
-13
-12
-11
-10
-9
-8
-7
-6
-5
-4
-3
-2
-1
Dale Roberts
Negative Numbers in Binary (cont.)
4. Excess Representation
– For a given fixed number of bits
the range is remapped such that
roughly half the numbers are
negative and half are positive.
Example: (as left)
Excess – 8 notation for 4 bit numbers
Binary value = 8 + excess-8
value
MSB can be used as a sign bit,
but
If MSB =1, positive (+ ve) number
If MSB =0, negative (- ve) number
Numbers
Binary
Value
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Notation
Excess – 8
Value
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
-8
-7
-6
-5
-4
-3
-2
-1
0
1
2
3
4
5
6
7
Dale Roberts
Fundamental Data Type
• With vs. without using sign bit
For a 16 bit binary pattern:
2 byte unsigned (Default type is int)
0000 0000 0000 0000 (  0D)
0000 0000 0000 0001 (  1D )
0000 0000 0000 0010 (  2D )
….
0111 1111 1111 1111 (  32767D  215 -1)
1000 0000 0000 0000 (  32768D  215)
….
1111 1111 1111 1111 ( 216 –1)
2 byte
int
1000 0000 0000 0000 (  -32768D  - 215 )
1000 0000 0000 0001 (  -32767D  - 215 +1)
….
1111 1111 1111 1110 (  - 2D )
1111 1111 1111 1111 (  - 1D )
0000 0000 0000 0000 (  0D )
0000 0000 0000 0001 (  1D )
0000 0000 0000 0010 (  2D )
….
0111 1111 1111 1111 (  32767D  215 -1)
Dale Roberts
Fundamental Data Type
Four Data Types in C (assume 2’s complement, byte machine)
Data Type
char
Abbreviation
Size (byte)
Range
char
1
-128 ~ 127
unsigned char
1
0 ~ 255
2 or 4
-215 ~ 215-1 or -231 ~ 231-1
2 or 4
0 ~ 65535 or 0 ~ 232-1
int
int
unsigned int
unsigned
short int
short
2
-32768 ~ 32767
unsigned short
int
unsigned short
2
0 ~ 65535
long int
long
4
-231 ~ 231-1
unsigned long
int
unsigned long
4
0 ~ 232-1
float
4
double
8
Note:
27 = 128, 215 =32768, 215 = 2147483648
Complex and double complex are not available
Dale Roberts
Fractional Numbers
Examples: 456.7810 = 4 x 102 + 5 x 101 + 6 x 100 + 7 x 10-1+8 x 10-2
1011.112
= 1 x 23 + 0 x 22 + 1 x 21 + 1 x 20 + 1 x 2-1 + 1 x 2-2
= 8 + 0 + 2 + 1 + 1/2 + ¼
= 11 + 0.5 + 0.25 = 11.7510
Conversion from binary number system to
decimal system
Examples: 111.112 = 1 x 22 + 1 x 21 + 1 x 20 + 1 x 2-1 + 1 x 2-2
= 4 + 2 + 1 + 1/2 + ¼ = 7.7510
Examples: 11.0112
2
1
0
22
21
20
2
1
-1
2-1
-2
2-2
-3
2-
3
4
x
x
½
¼
x
1/8
x
Dale Roberts
Conversion from decimal number system to binary
system
Examples:
7.7510 = (?)2
Conversion of the integer part: same as before – repeated division by 2
7 / 2 = 3 (Q), 1 (R)  3 / 2 = 1 (Q), 1 (R)  1 / 2 = 0 (Q), 1 (R)
710 = 1112
2. Conversion of the fractional part: perform a repeated multiplication by 2 and extract
the integer part of the result
0.75 x 2 =1.50  extract 1
0.5 x 2 = 1.0  extract 1
0.7510 = 0.112
write in the same order
0.0
 stop
1.

Combine the results from integer and fractional part, 7.7510 = 111.112
How about choose some of
4
2
1
1/2
1/4
=0.5
=0.25
1/8
=0.125
Examples: try 5.625B
Dale Roberts
Fractional Numbers (cont.)
Exercise 1: Convert (0.625)10 to its binary form
Solution:
0.625 x 2 = 1.25
 extract 1
0.25 x 2 = 0.5
 extract 0
0.5 x 2 = 1.0
 extract 1
0.0
 stop
 (0.625)10 = (0.101)2
Exercise 2: Convert (0.6)10 to its binary form
Solution:
0.6 x 2 = 1.2
 extract 1
0.2 x 2 = 0.4
 extract 0
0.4 x 2 = 0.8
 extract 0
0.8 x 2 = 1.6
 extract 1
0.6 x 2 =

 (0.6)10 = (0.1001 1001 1001 …)2
Dale Roberts
Fractional Numbers (cont.)
Errors
One source of error in the computations is due to back and
forth conversions between decimal and binary formats
Example: (0.6)10 + (0.6)10 = 1.210
Since (0.6)10 = (0.1001 1001 1001 …)2
Lets assume a 8-bit representation: (0.6)10 = (0 .1001 1001)2 , therefore
0.6
0.10011001
+ 0.6
 + 0.10011001
1.00110010
Lets reconvert to decimal system:
(1.00110010)b
= 1 x 20 + 0 x 2-1 + 0 x 2-2 + 1 x 2-3 + 1 x 2-4 + 0 x 2-5 + 0 x 2-6 + 1 x 2-7 + 0 x 2-8
= 1 + 1/8 + 1/16 + 1/128 = 1.1953125
 Error = 1.2 – 1.1953125
= 0.0046875
Dale Roberts
Floating Point Number Representation
If x is a real number then its normal form representation is:
x = f • Base E
where
f : mantissa
E: exponent
exponent
Example:
125.3210 = 0.12532 • 103
mantissa
- 125.3210 = - 0.12532 • 103
0.054610 =
0.546 • 10 –1
The mantissa is normalized, so the digit after the fractional point is non-zero.
If needed the mantissa should be shifted appropriately to make the first digit
(after the fractional point) to be non-zero & the exponent is properly adjusted.
Dale Roberts
Example:
134.1510 = 0.13415 x 103
-2
0.002110 = 0.21 x 10
101.11B =
0.011B =
AB.CDH=
0.00ACH=
Dale Roberts
Assume we use 16-bit binary pattern for normalized binary
form based on the following convention (MSB to LSB)
Sign of mantissa (±)= left most bit (where 0: +; 1: - )
Mantissa (f)= next 11 bits
Sign of exponent (±)= next bit (where 0: +; 1: - )
Exponent (E) = next three bits
x = ± f • Base
f = 0.?1?2?3?4…?11 ?12…?15
±E
E : converted to binary, b1b2b3
MSB
LSB
?1
+:0
- :1
?2
?3
?4
?5
?6
?7
?8
?9
?10 ?11
b1
b2
b3
+:0
- :1
Dale Roberts
Floating Point Number Representation
Question:
How the computer expresses the 16-bit approximation of
1110.111010111111 in normalized binary form using the
following convention
Sign of mantissa = left most bit (where 0: +; 1: - )
Mantissa = next 11 bits
Sign of exponent = next bit (where 0: +; 1: - )
Exponent = next three bits
Answer:
Step 1: Normalization
1110.111010111111 = + 0.1110111010111111 * 2
+4
Step 2: “Plant” 16 bits
sign
1 bit
mantissa
11 bits
sign exponent
1 bit
3 bits
the 16 bit floating point representation is 0 11101110101 0 100
Dale Roberts
Question:
Interpret the normalized binary number
0111 0000 0000 1010
B
using the convention mentioned
Sign of mantissa = left most bit (where 0: +; 1: - )
Mantissa = next 11 bits
Sign of exponent = next bit (where 0: +; 1: - )
Exponent = next three bits
find its decimal equivalent.
Answer:
0 11100000000 1 010
B
= 0.111B * 2-2
Dale Roberts
Floating Point Number Representation (cont.)
The 32 Bit Single Precision Floating Point Format for IBM 370
Base = 16
Exponent = Excess-64 notation (i.e., compute binary equivalent, then substrate 64)
Sign = sign of number (0: positive, 1: negative)
Mantissa = normalized fraction (i.e. first digital after ‘.’ is non-zero)
sign
1 bit
exponent
7 bits
mantissa
24 bits
Example: What is the value of the following point number?
1 100 0010 1001 0011 1101 0111 1100 0010
Sign = 1  the number is negative
Exponent (E) = 100 00102 = 6610 = 2 (substrate 64, because of Excess-64 )
Mantissa (f ) = 1001 0011 1101 0111 1100 0010 = 93D7C2H
 The above floating point number is: x = (sign) f • 16 E = - 0.93D7C2 • 16 2
x = - (9 x 16-1 + 3 x 16-2 + D x 16-3 + 7 x 16-4 + C x 16-5 + 2 x 16-6) • 16 2
= - (9 x 161 + 3 x 160 + 13 x 16-1 + 7 x 16-2 + 12 x 16-3 + 2 x 16-4)
= - (144+3 +0.8125+0.02734375 + 0.0029296875 + 0.000030517578125)
= - 147.842803955078125
Dale Roberts
Acknowledgements
These slides where originally prepared by Dr. Jeffrey Huang, updated by Dale
Roberts.
Dale Roberts
Related documents