1 / 29

Computer Arithmetic: Number Representation and Arithmetic Operations

This lecture focuses on number representation and techniques for implementing arithmetic operations in computer architecture. It covers both integer and floating-point arithmetic. The lecture discusses decimal and binary number systems, integer representation, sign-magnitude representation, two's complement representation, and addition/subtraction operations.

mtenney
Download Presentation

Computer Arithmetic: Number Representation and Arithmetic Operations

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CS 447 – Computer Architecture Lecture 2Computer Arithmetic (1) August 29, 2007 Karem Sakallah ksakalla@qatar.cmu.edu www.qatar.cmu.edu/~msakr/15447-f07/

  2. 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.

  3. 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)

  4. ALU Inputs and Outputs

  5. d3 d7 d5 d0 d4 d1 d6 d2 0 2 7 9 0 0 0 3 107 103 104 101 105 100 106 102 Review: Decimal Numbers • Integer Representation • number is sum of DIGIT * “place value” Range 0 to 10n - 1 379210 = 3  103 + 7  102 + 9  101 + 2  100 = 3000 + 700 + 90 + 2

  6. 3792 + 531 ??? 1 “carry 1” because 9+3 = 12 0 4 3 2 3 Review: Decimal Numbers • Adding two decimal numbers • add by “place value”, one digit at a time 3 7 9 2 + 0 5 3 1

  7. b5 b6 b0 b7 b3 b1 b4 b2 1 0 0 0 1 0 0 1 26 23 24 22 21 20 25 27 Binary Numbers • 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 011001002 = 26 + 25 + 22 = 64 + 32 + 4 = 10010 Range 0 to 2n - 1

  8. 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

  9. Binary Arithmetic • 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 A bits 1 1 1 0 B bits + 0 1 1 1 sum bits 0 1 0 1 carry-out bits 1 1 1 1 0 B A FA carry out carry in sum

  10. 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

  11. Sign-Magnitude • Problems: • Need to consider both sign and magnitude in arithmetic • Two representations of zero (+0 and -0) • Left most bit is sign bit • 0 means positive • 1 means negative • +18 = 00010010 • -18 = 10010010

  12. Two’s Complement • -3 = 11111101 • -2 = 11111110 • -1 = 11111111 • -0 = 00000000 • +3 = 00000011 • +2 = 00000010 • +1 = 00000001 • +0 = 00000000

  13. Two’s Complement 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 • +3 = 00000011 • +2 = 00000010 • +1 = 00000001 • +0 = 00000000 • -3 = 11111101 • -2 = 11111110 • -1 = 11111111 • -0 = 00000000

  14. 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

  15. -1 0 +1 -2 1111 0000 1110 0001 -3 +2 + 1101 0010 -4 +3 1100 0011 0 100 = + 4 -5 1011 +4 1 100 = - 4 0100 1010 0101 -6 +5 - 1001 0110 +6 -7 1000 0111 +7 -8 2's complement • Only one representation for 0 • One more negative number than positive numbers

  16. Geometric Depiction of Two’s Complement Integers

  17. Negation Special Case 1 • 0 = 00000000 • Bitwise NOT 11111111 • Add 1 to LSB +1 • Result 1 00000000 • Overflow is ignored, so: • - 0 = 0 

  18. 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

  19. 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

  20. 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)

  21. 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

  22. 0 0 1 1 +1 0 1 1 1 1 1 0 0 1 0 1 +1 1 0 1 1 0 0 1 0 010110101011 flip +1 Binary Subtraction • 2’s complement subtraction: add negative 5 - 3 = 2 0101 001111001101 flip +1 2 ignoreoverflow -3 in 2’s complement form 3 - 5 = -2 0011 -2 00010010 flip -5 in 2’s complement form +1 (flip+1 also gives positive of negative number)

  23. Hardware for Addition and Subtraction

  24. Multiplication • Complex • Work out partial product for each digit • Take care with place value (column) • Add partial products

  25. 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

  26. Unsigned Binary Multiplication

  27. Execution of Example

  28. Flowchart for Unsigned Binary Multiplication

  29. Multiplying Negative Numbers • This does not work! • Solution 1 • Convert to positive if required • Multiply as above • If signs were different, negate answer • Solution 2 • Booth’s algorithm

More Related