Post on 22-Dec-2015
Computer Architecture Fall 2007 ©
August 29, 2007
Karem Sakallahksakalla@qatar.cmu.edu
www.qatar.cmu.edu/~msakr/15447-f07/
CS 447 – Computer Architecture
Lecture 2
Computer Arithmetic (1)
Computer Architecture Fall 2007 ©
Chapter objectives
In this lecture we will focus on the representation of
numbers and techniques for implementing
arithmetic operations. Processors typically
support two types of arithmetic: integer, or fixed
point, and floating point. For both cases, the
lecture first examines the representation of
numbers and then discusses arithmetic
operations.
Computer Architecture Fall 2007 ©
Arithmetic & Logic Unit°Does the calculations
°Everything else in the computer is there to service this unit
°Handles integers
°May handle floating point (real) numbers
°May be separate (maths co-processor)
Computer Architecture Fall 2007 ©
Review: Decimal Numbers
° Integer Representation• number is sum of DIGIT * “place value”
2
100
d0
9
101
d1
7
102
d2
3
103
d3
0
104
d4
0
105
d5
0
106
d6
0
107
d7
379210= 3 103 + 7 102 + 9 101 + 2 100
= 3000 + 700 + 90 + 2
Range0 to 10n - 1
Computer Architecture Fall 2007 ©
Review: Decimal Numbers
3 7 9 2 + 0 5 3 1
° Adding two decimal numbers• add by “place value”, one digit at a time
3792 + 531
???
1 “carry 1” because9+3 = 12
0 4 3 2 3
Computer Architecture Fall 2007 ©
Binary Numbers
0
20
b0
0
21
b1
1
22
b2
0
23
b3
0
24
b4
1
25
b5
1
26
b6
0
27
b7
011001002 = 26 + 25 + 22
= 64 + 32 + 4 = 10010 Range
0 to 2n - 1
• Humans can naturally count up to 10 values, but computers can count only up to 2 values (0 and 1)
• (Unsigned) Binary Integer Representation “base” of place values is 2, not 10
Computer Architecture Fall 2007 ©
Binary Representation
If a number is represented in n = 8-bits
Value in Binary:
Value in Decimal:
27.a7 + 26.a6 + 25.a5 + 24.a4 + 23.a3 + 22.a2 + 21.a1 + 20.a0
Value in Binary:
Value in Decimal:
2n-1.an-1 + 2n-2.an-2 + … + 24.a4 + 23.a3 + 22.a2 + 21.a1 + 20.a0
a7 a6 a5 a4 a3 a2 a1 a0
an-1 an-2… a4 a3 a2 a1 a0
Computer Architecture Fall 2007 ©
Binary Arithmetic
A bits 1 1 1 0B bits + 0 1 1 1
° Add up to 3 bits at a time per place value• A and B
• “carry in”
° Output 2 bits at a time• sum bit for that place value
• “carry out” bit(becomes carry-in of next bit)
° Can be done using a function with 3 inputs, 2 outputs
carry-in bits 1 1 1 0 0
sum bits 0 1 0 1carry-out bits 1 1 1 1 0
FA carry in
carry out
sum
AB
Computer Architecture Fall 2007 ©
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
Computer Architecture Fall 2007 ©
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)
Computer Architecture Fall 2007 ©
Two’s Complement°+3 = 00000011
°+2 = 00000010
°+1 = 00000001
°+0 = 00000000
° -3 = 11111101
° -2 = 11111110
° -1 = 11111111
° -0 = 00000000
Computer Architecture Fall 2007 ©
Two’s Complement
°+3 = 00000011
°+2 = 00000010
°+1 = 00000001
°+0 = 00000000
° -3 = 11111101
° -2 = 11111110
° -1 = 11111111
° -0 = 00000000
If a number is represented in n = 8-bits
Value in Binary:
Value in Decimal:
27.a7 + 26.a6 + 25.a5 + 24.a4 + 23.a3 + 22.a2 + 21.a1 + 20.a0
a7 a6 a5 a4 a3 a2 a1 a0
Computer Architecture Fall 2007 ©
Benefits
°One representation of zero
°Arithmetic works easily (see later)
°Negating is fairly easy• 3 = 00000011
•Boolean complement gives11111100
•Add 1 to LSB 11111101
Computer Architecture Fall 2007 ©
2's complement
° Only one representation for 0
° One more negative number than positive numbers
0000
0111
0011
1011
11111110
1101
1100
1010
1001
1000
0110
0101
0100
0010
0001
0+1
+2
+3
+4
+5
+6
+7-8
-7
-6
-5
-4
-3
-2
-1
0 100 = + 4 1 100 = - 4
+
-
Computer Architecture Fall 2007 ©
Negation Special Case 1
° 0 = 00000000
°Bitwise NOT 11111111
°Add 1 to LSB +1
°Result 1 00000000
°Overflow is ignored, so:
° - 0 = 0
Computer Architecture Fall 2007 ©
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
Computer Architecture Fall 2007 ©
Range of Numbers
°8 bit 2’s complement• +127 = 01111111 = 27 -1
• -128 = 10000000 = -27
°16 bit 2’s complement• +32767 = 011111111 11111111 = 215 - 1
• -32768 = 100000000 00000000 = -215
Computer Architecture Fall 2007 ©
Conversion Between Lengths°Positive number pack with leading zeros
°+18 = 00010010
°+18 = 00000000 00010010
°Negative numbers pack with leading ones
° -18 = 10010010
° -18 = 11111111 10010010
° i.e. pack with MSB (sign bit)
Computer Architecture Fall 2007 ©
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
Computer Architecture Fall 2007 ©
Binary Subtraction
° 2’s complement subtraction: add negative
0 1 0 1 +1 1 0 1
1 0 0 1 0
5 - 3 = 2
0101 001111001101
flip+1
-3 in 2’s complement form
2ignoreoverflow
0 0 1 1 +1 0 1 1
1 1 1 0
3 - 5 = -2
0011
-5 in 2’s complement form
010110101011
flip+1
-200010010
flip+1
(flip+1 also gives positive of negative number)
Computer Architecture Fall 2007 ©
Multiplication
°Complex
°Work out partial product for each digit
°Take care with place value (column)
°Add partial products
Computer Architecture Fall 2007 ©
Multiplication Example
° 1011 Multiplicand (11 dec)
° x 1101 Multiplier (13 dec)
° 1011 Partial products
° 0000 Note: if multiplier bit is 1 copy
° 1011 multiplicand (place value)
° 1011 otherwise zero
° 10001111 Product (143 dec)
° Note: need double length result