PPT

advertisement
Chapter 2 Representing and
Manipulating Information
Prof. Qi Tian
CS 3843 Fall 2013
http://www.cs.utsa.edu/~qitian/CS3843/
1
Summary of Lectures
• 09-30-2013 (Monday)
– Section 2.4.4 Rounding Example
– In-class Quiz 2
– Reminder: Midterm 1 on Monday Oct. 7, 2013
– Practice Problems for Midterm One
2
Summary of Lectures
• 09-27-2013 (Friday)
–
–
–
–
IEEE Rounding Methods
Practice Problem
Quiz 2 next Monday
Midterm 1 on Monday Oct. 7, 2013
• 09-25-2013 (Wednesday)
– Examples for IEEE Floating Point Representation
• 09-23-2013 (Monday)
– Section 2.4 IEEE Floating Point Representation (cont.)
3
Summary of Lectures
• 09-20-2013 (Friday)
– Section 2.4 IEEE Floating Point Representation (cont.)
• 09-18-2013 (Wednesday)
– Section 2.4 IEEE Floating Point Representation
• 09-16-2013 (Monday)
– Section 2.3.1 Unsigned Addition and Unsigned
Subtraction
– Section 2.3.2 Two’s Complement Addition
– Quiz 1
4
Summary of Lectures
• 09-13-2013 (Friday)
– Questions on P.9 of Assignment 1
– Section 2.3.1 Unsigned Addition
– Quiz 1
• 09-11-2013 (Wednesday)
– Section 2.1.10 Shift Operations
• Practice Problem 4
– Questions on Assignment 1
• 09-09-2013 (Monday)
– Practice Problems 1-3
5
Summary of Lectures
• 09-06-2013 (Friday)
– Section 2.2.3 Representing Negative Numbers
• Sign & Magnitude System
• Two’s Complement System
• One’s Complement System
• 09-04-2013 (Wednesday)
– Section 2.1.2-2.1.10
• Word size/data size/addressing and byte ordering
• Boolean Algebra and Logical Operations in C
6
Summary of Lectures
• 08-30-2013 (Friday)
– Conversion between decimal and base R number
• Integer
• Fractional number
• 08-28-2013 (Wednesday)
– Syllabus
– Information Storage
– Conversion between Binary and Hexadecimal Number
7
Practice Problem 1 - Bit-level Operations in C
C expression
Binary Representation
Binary Result
Hexadecimal result
~0x41
~[0100 0001]
[1011 1110]
0x BE
~0x00
0x69 & 0x55
0x69 | 0x55
8
Practice Problem 1 - Bit-level Operations in C
C expression
Binary Representation
Binary Result
Hexadecimal result
~0x41
~[0100 0001]
[1011 1110]
0x BE
~0x00
~[0000 0000]
[1111 1111]
0x FF
0x69 & 0x55
[0110 1001]&[0101 0101] [0100 0001]
0x 41
0x69 | 0x55
[0110 1001]|[0101 0101]
0x 7D
[0111 1101]
9
Practice Problem 2
- Boolean Operations (bit-level and logical operation in C)
Suppose x and y have byte values 0x66 and 0x39, respectively.
Fill in the following table indicating the byte value of the
different C expressions:
Expression
Value
Expression
x&y
x && y
x| y
x || y
~x | ~y
!x ||!y
x & !y
x && ~y
Value
10
Practice Problem 2
- Boolean Operations (bit-level and logical operation in C)
Suppose x and y have byte values 0x66 and 0x39, respectively.
Fill in the following table indicating the byte value of the
different C expressions:
Expression
Value
Expression
Value
x&y
0x20
x && y
0x 1
x| y
0x7F
x || y
0x 1
~x | ~y
0x DF
!x ||!y
0x 0
x & !y
0x 0
x && ~y
0x 1
11
Practice Problem 3
Representing Negative Numbers
Q1. Using a 8-bit word, find the binary representation
of -27.
a) Using Sign and Magnitude System
b) Using 1’s Complement System
c) Using 2’s Complement System
12
Practice Problem 3
Representing Negative Numbers
Q1. Using a 8-bit word, find the binary representation
of -27.
a) Using Sign and Magnitude System
N = 27 = 0001, 1011
-27 = 1001,1011
b) Using 1’s Complement System
N = 27 = 0001, 1011
N = 1110, 0100
b) Using 2’s Complement System
N* = 1110, 0101
13
Practice Problem 3
Representing Negative Numbers
Q2. Using a 12-bit word, find the binary representation
of -27.
a) Using Sign and Magnitude System
b) Using 1’s Complement System
c) Using 2’s Complement System
14
Practice Problem 3
Representing Negative Numbers
Q2. Using a 12-bit word, find the binary representation
of -27.
a) Using Sign and Magnitude System
N = 27 = 0000, 0001, 1011
-27 = 1000, 0001,1011 (not sign extension from 8 bit)
b) Using 1’s Complement System
N = 27 = 0000, 0001, 1011
N = 1111,1110, 0100 (sign extension from 8 bit)
b) Using 2’s Complement System
N* = 1111, 1110, 0101 (sign extension from 8 bit)
15
Section 2.2.1 Integer Representation
C data type
Bytes
Minimum
Maximum
char
1
-128
127
unsigned char
1
0
255
short (int)
2
-32,768
32,767
unsigned short (int)
2
0
65,535
int
4
-2,147,483,648
2,147,483,647
unsigned (int)
4
0
4,294,967,295
long (int)
4
-2,147,483,648
2,147,483,647
unsigned long (int)
4
0
4,294,967,295
long long (int)
8
-9,223,372,036,854,775,808
9,223,372,036,854,775,807
Unsigned long long (int)
8
0
18,446,744,073,709,551,615
Typical range for C integral data type on 32-bit machine
17
Section 2.2 Integer Representation
C data type
Bytes
Minimum
Maximum
char
1
-128
127
unsigned char
1
0
255
short (int)
2
-32,768
32,767
unsigned short (int)
2
0
65,535
int
4
-2,147,483,648
2,147,483,647
unsigned (int)
4
0
4,294,967,295
long (int)
8
-9,223,372,036,854,775,808
9,223,372,036,854,775,807
unsigned long (int)
8
0
18,446,744,073,709,551,615
long long (int)
8
-9,223,372,036,854,775,808
9,223,372,036,854,775,807
Unsigned long long (int)
8
0
18,446,744,073,709,551,615
Typical range for C integral data type on 64-bit machine
18
Section 2.1.5 ASCII Code
• A character is usually represented as a single byte
by using the ASCII code.
• Strings are represented as arrays of characters
terminated by the null character.
• ASCII
– American Standard Code for Information Interchange
– 7-bit code (128 ASCII Characters)
– Some properties:
•
•
•
•
Codes for digits are consecutive: ‘0’ = 48, ‘1’ =49, etc.
Codes for upper case letters are consecutive: ‘A’=65, ‘B’=66, etc.
Codes for lower case letters are consecutive: ‘a’=97, ‘b’=98, etc.
Maximum value is 127.
19
ASCII Code
• A compact table in hex and decimal
20
Section 2.1.10 Shift Operations
• X =[xn-1,xn-2,…, x1, x0]
• Left shift: x << k (C expression)
– Result: [xn-k-1, xn-k-2, …, x0, 0,…, 0]
– Dropping off the k most significant bits, and filled the
right end with k zeros
• Right shift: x >> k (C expression)
– Logical shift: x >>L k
• Result: [0,…,0,xn-1, xn-2, …, xk]
– Arithmetic shift: x >>Ak
• Result: [xn-1,…, xn-1, xn-1, …, xk]
21
Section 2.1.10 Shift Operations
•
•
•
•
x << k is equivalent to multiply by 2k, x*2k
x >>A k is equivalent to divide by 2k , x/2k
k < 32 for integer x
Many C compilers perform arithmetic right
shifts on negative values in which the vacated
values are filled with the sign bit.
22
Section 2.3.6 – Multiplying by constants
• A left shift by k bits is equivalent to multiplying by
2 k.
• Using addition if a small number of 1 bits
x * 49 = x * [110001]= x*[32 + 16 + 1] = x * [25+24+20]
= (x*25)+(x*24)+(x*20)= (x<<5) + (x<<4) +x
• Using subtraction if a large number of 1 bits in a row
x * 78 = x*[1001110] = x*[26+24-2]
= (x<<6)+(x<<4)-(x<<1)
23
Practice Problem 4
• For each of the following values of K, find ways to express x *K using only
the specified number of operations, where we consider both addition and
subtractions to have comparable cost.
K
Shifts
Add/Subs
6
2
1
31
1
1
-6
2
1
55
2
2
Expression
24
Section 2.2.2 Unsigned Encodings
• There is only one standard way of encoding
unsigned integers.
• Bit vector x = [xw-1, xw-2, …, x1, x0] with w bits
• Binary to unsigned number:
B2Uw(x)=2w-1xw-1+2w-2 xw-2++21 x1+20 x0
• Each integer between 0 and 2w-1 has a unique
representation with w bits.
25
Section 2.2.2 Unsigned Encodings
• Examples:
B2U4([0011])=0x23+0x22+1x21+1x20=3
B2U4([1011])=1x23+0x22+1x21+1x20=11
26
Section 2.3.1 Unsigned Addition
• w bits, maximum value is 2w-1.
• It might take w+1 bits to represent the value of
x+y.
• Addition is done modulo 2w.
• When x+y does not produce the correct result,
we say that overflow has occurred.
• In C, overflow is not detected.
• How can you test whether adding x and y will
produce an overflow?
27
Section 2.3.1 Unsigned Addition
• What is
28
Section 2.3.1 Unsigned Addition
• What is
Sol:
139+147>28 therefore =(139+147)-28=30
29
Unsigned Addition and Substraction
Unsigned Addition
Unsigned Substraction
30
Section 2.4 IEEE Floating Point
Number of bits
Precision
s
exp
frac
total
single
1
8
23
32
double
1
11
52
64
extended
1
15
64
80
31
Example: A 6-bit format
s
exp (3 bits)
frac (2 bits)
• What is the bias: 22 -1 = 3.
• How many different values can be represented with 6 bits:
26 = 64.
• How many of these are NaN: 6
• How many of these are infinity: 2
• How many of these are positive, normalized: 6×4 = 24
• How many of these are negative, normalized: 6×4 = 24
• How many of values are zero (denormalized): 2
• How many of these are denormalized > 0: 3
• How many of these are denormalized < 0: 3
32
A 6-bit format (continued)
• What are the positive normalized values?
s = 0; exp = 1, 2, 3, 4, 5, or 6
frac = 00, 01, 10, or 11, corresponding to 1.00,
1.01, 1.10, and 1.11
V = 1.frac * 2exp – 3
• Smallest positive normalized number: 0.25
33
A 6-bit format (continued)
• Denormalized values: M = frac * 2-2 = frac/4: 0,
.25, .5, .75
value = M 2-2 = M/4.
The values are 0, .0625, 0.125, and 0.1875
Denormalized spacing: 0.0625
• Largest denormalized number: 0.1875
34
A 6-bit format (continued)
• Denormalized values: M = frac * 2-2 = frac/4: 0,
.25, .5, .75
value = M × 2-2 = M/4.
The values are 0, .0625, 0.125, and 0.1875
Denormalized spacing: 0.0625
• Largest denormalized number: 0.1875
35
A 6-bit format (continued)
• The denormalized values are equally spaced: spacing is 0.0625.
• The normailzed values are not equally spaced.
36
Example: Rounding
Mode
Round-to-even
Round-towards-zero
1.4
1.6
1.5
2.5
-1.5
Round-down
Round-up
37
Example: Rounding
Mode
Round-to-even
Round-towards-zero
Round-down
Round-up
1.4
1
1
1.6
2
1
1.5
2
1
2.5
2
2
-1.5
-2
-1
1
2
1
2
1
2
2
3
-2
-1
38
Rounding Example
• American Patriot Missile Battery in the first
Gulf-War, Feb. 25, 1991, failed to intercept an
incoming Iraqi Scud missile.
• Disaster Result: 28 soldiers killed
• Failure Analysis by the US General Accounting
Office (GAO):
– The underlying cause was an impression in a
numeric calculation.
39
Download