Title: See Stallings Chapter 9
1Computer Arithmetic
2Arithmetic Logic Unit (ALU)
- ALU does the calculations
- Everything else in the computer is there to
service this unit (!) - Handles integers
- May handle floating point (real) numbers
- there may be a separate floating point unit (FPU)
(math co-processor) - or an on-chip separate FPU (486DX )
- on Pentium (earlier slides) multiple ALUs and FPUs
3ALU Inputs and Outputs
requested arithmetic operation
Status e.g overflow?
operands (in)
operands (out)
4Integer Representation
- Positive numbers stored in binary
- e.g. 4100101001
- Only have 0 1 to represent everything
- No minus sign!
- No period!
- Exponent?
- Two approaches to integers
- Sign-Magnitude
- Twos complement
unsigned integers? counting numbers? Is zero
positive? (NO!)
5Sign-Magnitude Approach
- Leftmost bit is most
- significant bit (msb)
- Rightmost bit is least
- significant bit (lsb)
- Left most bit is sign bit
- 0 means positive
- 1 means negative
- 18 00010010
- -18 10010010
- Problems!!
- Need to consider both sign and magnitude in
arithmetic - Two representations of zero (0 and -0)
6Twos Complement
- 3 00000011
- 2 00000010
- 1 00000001
- 0 00000000 00000000
- -1 11111111 11111111
- -2 11111110
- -3 11111101
subtract 1
subtract 1 ???? add 1
7Aside re Binary Arithmetic
- You should already know that
- 0212 12
- 012 012 102 (or 1212 02 carry 1)
- 112 12 002 carry 1
- 12 12 02 (no borrow), 02 12 12 borrow
1 - 00..002 12 11..112 borrow 1
- 000112 024 023 022 121 120 ?
bi 2i
K bit binary number, e.g. K 5
K-1
i0
b2
8Twos Complement Benefits
- One representation of zero
- Arithmetic works easily (see later)
- Negating is fairly easy
- 310 000000112
- bitwise complement gives 11111100
- Add 1 11111101 310
ones complement
twos complement
9Twos Complement Benefits
- What about negating a negative number ?
- 310 111111012
- bitwise complement gives 00000010
- Add 1 00000011 310
- GOOD! ( 3 ) 3
10Twos Complement Integers
In n bits, can store integers from 2n-1 to
2n-1 1
neg
pos
11Range of Numbers
- 8 bit 2s complement
- 127 01111111 27 -1
- -128 10000000 -27
- 16 bit 2s complement
- 32767 01111111 11111111 215 - 1
- -32768 10000000 00000000 -215
- N bit 2s complement
- 011111111..11111111 2N-1 - 1
- 100000000..00000000 -2N-1
Largest positive
Smallest (?) negative
12Negation Special Case 1
- 0 00000000
- Bitwise not 11111111
- Add 1 1
- Result 1 00000000
- if this bit is ignored
- 0 0
hmmm . . .
OK
13Carry vs. Overflow
- So . . . what about the ignored bit on the last
slide? - CARRY is an artifact of performing addition
- always happens for binary values, carry 0 or 1
- exists independently of computers!
- OVERFLOW an exception condition that results
from using computers to perform operations - caused by restricting values to fixed number of
bits - occurs when result exceeds range for the number
of bits - important limitation of using computers!
e.g. Y2K bug!
14Overflow is Implementation Dependent!
- recall example negation of 0
- binary addition is performed regardless of
interpretation - 11111111
- 1
- 1 00000000
for this addition the answer is 0 with carry 1
fixed number of bits to represent values
carry
15Unsigned Interpretation ? Overflow
- consider values as unsigned integers
- 11111111
- 1
- 1 00000000
- but . . . 255 1 256 ??
- answer 0 ???
- OVERFLOW occurred!
- WHY? cannot represent 256 as an 8-bit unsigned
integer!
25510
16Signed Interpretation ? No Overflow
- consider values as signed integers
- 11111111
- 1
- 1 00000000
- 1 1 0
- answer is correct!
- OVERFLOW did not occur (even though carry 1!)
- WHY? can represent 0 as an 8-bit signed integer!
110
17Negation Special Case 2
- 128 10000000
- bitwise not 01111111
- Add 1 to lsb 1
- Result 10000000
- Whoops!
- ( 128) 128
- Need to monitor msb (sign bit)
- It should change during negation?
Problem! OVERFLOW!
what about negating zero?
18Conversion Between Lengths, e.g. 8 ? 16
- Positive number add leading zeros
- 18 00010010
- 18 00000000 00010010
- Negative numbers add leading ones
- -18 11101110
- -18 11111111 11101110
- i.e. pack with msb (sign bit)
called sign extension
19Addition and Subtraction
- a b ?
- Normal binary addition
- Monitor sign bit of result for overflow
- Take twos complement of b and add to a
- i.e. a b a ( b)
- So we only need addition and 2s complement
circuits
20Hardware for Addition and Subtraction
2s
A B ?
21Multiplication
- Complicated
- Work out partial product for each digit
- Take care with place value (column)
- Add partial products
- Aside Multiply by 2? (shift?)
22Multiplication Example
- 1011 Multiplicand (1110)
- x 1101 Multiplier (1310)
- 1011 Partial products
- 0000 Note if multiplier bit is 1
- 1011 copy multiplicand (place value)
- 1011 otherwise zero
- 10001111 Product (14310)
- Note need double length result could easily
overflow single word
23Unsigned Binary Multiplication
24Execution of 4-Bit ExampleM x Q A,Q
1 add
0 no add
1 add
1 add
25Flowchart for Unsigned Binary Multiplication
number of bits
26Multiplying Negative Numbers
- Multiplying negative numbers by this method does
not work! - Solution 1
- Convert to positive if required
- Multiply as above
- If signs were different, negate answer
- Solution 2
- Booths algorithm not in scope of course
27Division
- More complex than multiplication
- Negative numbers are really bad!
- Based on long division
- Aside Divide by 2? (shift?)
28Division of Unsigned Binary Integers
Quotient
00001101
1011
10010011
Divisor
Dividend
1011
001110
Partial Remainders
1011
001111
1011
Remainder
100
29Flowchart for Unsigned Binary Division
Divisor
Subtract
Shift left
Quotient
Remainder
/ Dividend
differences with multiply? shift left
subtract? no C add
30Real Numbers
- Numbers with fractions
- Could be done in pure binary
- 1001.1010 23 20 2-1 2-3 9.625
- Where is the binary point?
- Fixed?
- Very limited representation ability
- Moving?
- How do you show where it is?
fixed point
floating point
31Normalization
- Floating Point (FP) numbers are usually
normalized - i.e. exponent is adjusted so that leading bit
(msb) of significand is always 1 - Since msb is always 1 there is no need to store
it - Recall scientific notation where numbers are
normalized to give a single digit before the
decimal point - e.g. 3.123 x 103
32Floating Point (Scientific Notation)
(Biased) exponent
(stored) significand
Sign bit
- / 1.significand x 2exponent
- Floating point misnomer Point is actually fixed
after first digit of the significand
1.xxxxxx - xxxxxx is stored signficand
- Exponent indicates place value (point position)
33Floating Point Examples
Typo here! What's wrong?
34Signs for Floating Point
- Significand explicit sign bit (msb)
- rest of bits are magnitude (sort of)
- Exponent is in excess or biased notation
- 8 bit exponent field
- binary value range 0-255
- Excess (bias) 127 means
- Subtract 127 to get correct value
- Range -127 to 128
for k bit exponent bias 2k1 1
35FP Ranges
- Range The range of numbers that can be
represented - For a 32 bit number
- 8 bit exponent
- /- 2127 ? /- 1.5 x 1038
- Accuracy The effect of changing lsb of
significand - 23 bit significand 2-23 ? 1.2 x 10-7
- About 6 decimal places
36Expressible Numbers
2
2
37IEEE 754
- Standard for floating point storage
- 32 and 64 bit standards
- 8 and 11 bit exponent respectively
- Extended formats (both significand and exponent)
for intermediate results - special cases (table 9.4, page 318)
- 0 (how to normalize?)
- denormalized (for arithmetic)
- ? (how to quantify?)
- Not a number (NaN ? exception)
- How?
- use exponent all 0s
- ? zero, denormalized
- use exponent all 1s
- infinity, NAN
- reduces range!
- 2 126 to 2127
38IEEE 754 Formats
39FP Arithmetic /-
- Check for zeros
- Align significands (adjusting exponents)
- ? denormalize!
- Add or subtract significands
- Normalize result
40FP Addition Subtraction Flowchart
41FP Arithmetic x / ?
- Check for zero
- Add/subtract exponents
- Multiply/divide significands (watch sign)
- Normalize
- Round
- All intermediate results should be in double
length storage
42Floating Point Multiplication
1.xxxxx x 2biasa
x
1.yyyyy x 2biasb
43Floating Point Division