William Stallings Computer Organization and Architecture 8 Edition Computer Arithmetic
William Stallings Computer Organization and Architecture 8 Edition Computer Arithmetic
Computer Organization
and Architecture
8th Edition
Chapter 9
Computer Arithmetic
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
ALU Inputs and Outputs
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 compliment
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)
Two’s Compliment
• +3 = 00000011
• +2 = 00000010
• +1 = 00000001
• -1 = 11111111
• -2 = 11111110
• -3 = 11111101
Benefits
• One representation of zero
• Arithmetic works easily (see later)
• Negating is fairly easy
—3 = 00000011
—Boolean complement gives 11111100
—Add 1 to LSB 11111101
Geometric Depiction of Twos
Complement Integers
Negation Special Case 1
• 0= 00000000
• Bitwise not 11111111
• Add 1 to LSB +1
• Result 1 00000000
• Overflow is ignored, so:
• -0=0
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
Range of Numbers
• 8 bit 2s compliment
—+127 = 01111111 = 27 -1
— -128 = 10000000 = -27
—8 bit, 1 bit is used as a sign bit so you are left with 7 bits, hence the range
becomes -128 to 127
• 16 bit 2s compliment
—+32767 = 011111111 11111111 = 215 – 1
—1 bit used for sign, range = -32768 to 32767
— -32768 = 100000000 00000000 = -215
Conversion Between Lengths
• Positive number pack with leading zeros
• Conversion from 8 bit to 16 bit.
• +18 = 00010010
• +18 = 00000000 00010010
• Negative numbers pack with leading ones
• -18 = 11101110
• -18 = 11111111 11101110
00001101 Quotient
Divisor 1011 10010011
(11)
Dividend
1011
Partial 001110
1011
Remainders
001111
1011
Remainder
100
Flowchart for Unsigned Binary Division
DIVISION – (11/3)
N M(DIVISOR) A Q(DIVIDEND) ACTION/
-M = 11101 _________
4 00011 00000 1011 Initialization
00001 011? Shift Left AQ
11110 011? A=A- M
3 00001 0110 Q[0] = 0,RES A
00010 110? SHIFT LEFT AQ 11111
110? A=A+ M
2 00010 1100 Q[0] = 0, RES A 00101
100? SHIFT LEFT AQ 00010 100? A=A+ M
1 00010 1001 Q[0] = 1
00101 001? SHIFT LEFT AQ 00010
001? A=A- M 0
0 00010 0011 Q[0] = 1
2(remainder) 3(quotient)