2. Key Points
Two principle concerns for computer
arithmetic
• the way in which numbers are
represented
• the algorithms used for the basic
arithmetic operations
These two considerations apply both to integer
and floating point arithmetic
3. part of the computer that actually
performs arithmetic and logical
operations on data.
Handles integers
May handle floating point (real)
numbers
Arithmetic & Logic Unit (ALU)
5. Integer Representation
Only have 0 & 1 to represent everything
Positive numbers stored in binary
e.g. 41=00101001
No minus sign
No period
Sign-Magnitude
Two’s complement
6. Sign-Magnitude
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)
8. Benefits of 2’s complement
One representation of zero
Arithmetic works easily (see later)
Negating is fairly easy
3 = 00000011
Boolean complement gives 11111100
Add 1 to LSB 11111101
10. Negation Special Case 1
0 = 00000000
Bitwise not 11111111
Add 1 to LSB +1
Result 1 00000000
Overflow is ignored, so:
- 0 = 0
11. Negation Special Case 2
-128 = 10000000
bitwise not 01111111
Add 1 to LSB +1
Result 10000000
So:
-(-128) = -128 X
Monitor MSB (sign bit)
It should change during negation
12. Range of Numbers
8 bit 2’s complement
+127 = 01111111 = 2 -1
-128 = 10000000 = -2
16 bit 2’s complement
+32767 = 011111111 11111111 = 2 - 1
-32768 = 100000000 00000000 = - 2
13. Conversion Between Lengths
Positive number pack with leading zeros
+18 = 00010010(sign magnitude, 8bits)
+18 = 00000000 00010010(sign magnitude,16bits)
Negative numbers pack with leading ones
-18 = 10010010(sign magnitude, 8bits)
-18 = 10000000 10010010(sign magnitude,16bits)
i.e. pack with MSB (sign bit)
14. Addition and Subtraction
Normal binary addition
Monitor sign bit for overflow
Take two’s complement of subtrahend and
add to minuend
i.e. a - b = a + (-b)
So we only need addition and complement
circuits
17. Multiplication Example
1011 Multiplicand (11 dec)
x 1101 Multiplier (13 dec)
1011 Partial products
0000
1011
1011
10001111 Product (143 dec)
Note: need double length result
if multiplier bit is 1 copy
otherwise zero