1 / 34

Integer arithmetic

Integer arithmetic. Depends what you mean by “ integer ”. Assume at 3-bit string. Then we define: zero = 000 one = 001 Use zero, one and binary addition: Zero 000 One + 001 001 Zero + one = one. Makes sense!.

Télécharger la présentation

Integer arithmetic

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. Integer arithmetic • Depends what you mean by “integer”. • Assume at 3-bit string. • Then we define: zero = 000 one = 001 • Use zero, one and binary addition: Zero 000 One + 001 001 • Zero + one = one. • Makes sense!

  2. Add one repeatedly, use up all possible patterns: Zero 000 1 001 2 010 3 011 4 100 5 101 6 110 7 111 • Called the; Unsigned Integer System. • No negative integers!

  3. Two additions: 2 010 + 3 + 011 5 4 100 + 5 + 101 9

  4. Two additions: 2 010 + 3 + 011 5 101 Yes! 5 = 101 4 100 + 5 + 101 9 001 But 001 represents one. is 4 + 5 = 1???

  5. Addition of unsigned integers Error detected by presence of “carry”

  6. How do we subtract unsigned integers? We need the concept of the; “Two’s complement”

  7. One’s complement • Take any string; • Invert every bit; 0 1 • This is One’s complement. • "NOT”.

  8. Two’s complement • Given a string; • One's complement; • then add one. • This is called; two’s complement

  9. To subtract unsigned A-B • Perform: A + 2’s compl (B) = A + Not (B) + 1

  10. Example: 5 101 101 - 3 - 011 + 100 2 + 1 010 3 011 011 - 5 - 101 + 010 - 2 + 1 110 =2; Good! Carry! =6; BAD! No Carry!

  11. Subtraction of unsigned integers Error detected by absence of carry! • Warning: Some machines invert the carry bit on subtraction • So that "carry" => Error for both add and sub

  12. Conclusion • For unsigned arithmetic we are interested in carry • Pay attention! I never used the word "overflow" that's something completely different. • Also notice: • 3-bit operands gave 3-bit results. • Don't be tempted to write that 4'th bit down!

  13. How about negative numbers? • How should we represent -1? • How would we compute 0 - 1? 0 + 2's compl (1) • We choose this as our "-1" 1 = 001 - 1 = 110 + 1 111

  14. Repeatedly add -1: Zero 000 - 1 111 - 2 110 Less than - 3 101 zero - 4 110 - 5 011 No! • High order bit called "sign bit"

  15. Signed 3-bit integers 3 011 2 010 1 001 0 000 -1 111 -2 110 -3 101 -4 100 Not symmetrical around zero!!!

  16. Sign bit • The high order bit in a number • Also called "N"-bit • Value is negative when this bit is "1"

  17. Let's try A + B 1 001 1 001 +2 010 +(-1) 111 3 011 0 *000 • Both results is OK • But: Left case: no carry Right case: carry • Conclusion: For signed addition carry is worthless • Same conclusion for signed subtraction * carry

  18. Some additions A 1 0 0 1 2 0 1 0 +2 0 1 0 + 2 0 1 0 34 -1 1 1 1 -1 1 1 1 +(-3) 1 0 1 +(-4) 1 0 0 -4 -5 1 0 0 1 -2 1 1 0 +(-2) 1 0 0 +1 0 0 1 -1 -1

  19. Some additions B 1 0 0 1 2 0 1 0 +2 0 1 0 + 2 0 1 0 3 0 1 1 4 1 0 0 -1 1 1 1 -1 1 1 1 +(-3) 1 0 1 +(-4) 1 0 0 -4C 1 0 0 -5 C 0 1 1 1 0 0 1 -2 1 1 0 +(-2) 1 0 0 +1 0 0 1 -1 1 1 1 -1 1 1 1

  20. Some additions C 1 0 0 1 2 0 1 0 +2 0 1 0 + 2 0 1 0 3 0 1 1 4 1 0 0 3 -4 OK BAD -1 1 1 1 -1 1 1 1 +(-3) 1 0 1 +(-4) 1 0 0 -4C 1 0 0 -5 C 0 1 1 -4 3 OK BAD 1 0 0 1 -2 1 1 0 +(-2) 1 0 0 +1 0 0 1 -1 1 1 1 -1 1 1 1 -1 -1 OK OK

  21. Some additions D 1 0 0 1 2 0 1 0 +2 0 1 0 + 2 0 1 0 3 0 1 1 4 1 0 0 3 -4 OK BAD -1 1 1 1 -1 1 1 1 +(-3) 1 0 1 +(-4) 1 0 0 -4C 1 0 0 -5 C 0 1 1 -4 3 OK BAD 1 0 0 1 -2 1 1 0 +(-2) 1 0 0 +1 0 0 1 -1 1 1 1 -1 1 1 1 -1 -1 OK OK

  22. Error during signed addition: • R = A + B • A, B same sign and • R opposite sign • called overflow • Notice: Mathematically, signed addition is the same as unsigned addition • The same is true for signed subtraction and unsigned subtraction A - B –> A + (-B) –> A + 2's compl (B)

  23. Some subtractions A 3 0 1 1 3 0 1 1 - 1 + 1 1 1 -(-1) + 0 0 1 24 -1 1 1 1 1 0 0 1 - (-1) + 0 0 1 - (-1) + 0 0 1 0 2 - 3 1 0 1 - 4 1 0 0 - 1 + 1 1 1 - 1 + 1 1 1 -4- 5

  24. Some subtractions B 3 0 1 1 3 0 1 1 - 1 + 1 1 1 -(-1) + 0 0 1 2C 0 1 0 4 1 0 0 -1 1 1 1 1 0 0 1 - (-1) + 0 0 1 - (-1) + 0 0 1 0C 0 0 0 2 0 1 0 - 3 1 0 1 - 4 1 0 0 - 1 + 1 1 1 - 1 + 1 1 1 -4C 1 0 0 - 5C 0 1 1

  25. Some subtractions C 3 0 1 1 3 0 1 1 - 1 + 1 1 1 -(-1) + 0 0 1 2C 0 1 0 4 1 0 0 2 -4 OK BAD -1 1 1 1 1 0 0 1 - (-1) + 0 0 1 - (-1) + 0 0 1 0C 0 0 0 2 0 1 0 0 2 OK OK - 3 1 0 1 - 4 1 0 0 - 1 + 1 1 1 - 1 + 1 1 1 -4C 1 0 0 - 5C 0 1 1 -4 3 OK BAD

  26. Some subtractions D 3 0 1 1 3 0 1 1 - 1 + 1 1 1 -(-1) + 0 0 1 2C 0 1 0 4 1 0 0 2 -4 OK BAD -1 1 1 1 1 0 0 1 - (-1) + 0 0 1 - (-1) + 0 0 1 0C 0 0 0 2 0 1 0 0 2 OK OK - 3 1 0 1 - 4 1 0 0 - 1 + 1 1 1 - 1 + 1 1 1 -4C 1 0 0 - 5C 0 1 1 -4 3 OK BAD

  27. Error during signed subtraction: • R = A - B • A, B different sign and • B, R same sign • called overflow

  28. Arithmetic- logic unit (ALU) C = carry V = overflow N = sign bit of R Z = 1 if R = 0 Condition codes C, V, N, Z 32 A 32 C 32 B Operation

  29. Compare two unsigned numbers? • is A < B ? • Easy! Compute A - B and examine carry • But – to compare two signed numbers? • is A < B ? • Most common mistake: • Compute R = A - B, then look at sign of R. • If R < 0 then A < B (N-bit) • Not good enough!

  30. To compare two signed numbers: • What about • A = - 4 • B = 3 • - 4 100 • - 3 + 101 • c 001 • “If R neg then A < B” • We conclude A ≥ B, that is • - 4 ≥ 3 • Wrong!

  31. Some examples A 3 0 1 1 3 0 1 1 - 1 + 1 1 1 -(-1) + 0 0 1 -1 1 1 1 1 0 0 1 - (-1) + 0 0 1 - (-1) + 0 0 1 - 3 1 0 1 - 4 1 0 0 - 1 + 1 1 1 - 1 + 1 1 1

  32. Some examples B 3 0 1 1 3 0 1 1 - 1 + 1 1 1 -(-1) + 0 0 1 2C 0 1 0 4 1 0 0 3 < +1? No! 3 < -1? No! -1 1 1 1 1 0 0 1 - (-1) + 0 0 1 - (-1) + 0 0 1 0C 0 0 0 2 0 1 0 -1 < -1? No! 1 < -1? No! - 3 1 0 1 - 4 1 0 0 - 1 + 1 1 1 - 1 + 1 1 1 -4C 1 0 0 - 5C 0 1 1 -3 < +1? Yes! -4 < 1? Yes!

  33. Some examples C 3 0 1 1 3 0 1 1 - 1 + 1 1 1 -(-1) + 0 0 1 2C 0 1 0 4 1 0 0 3 < +1? No! 3 < -1? No! N = 0, V = 0 N = 1, V = 1 -1 1 1 1 1 0 0 1 - (-1) + 0 0 1 - (-1) + 0 0 1 0C 0 0 0 2 0 1 0 -1 < -1? No! 1 < -1? No! N = 0, V = 0 N = 0, V = 0 - 3 1 0 1 - 4 1 0 0 - 1 + 1 1 1 - 1 + 1 1 1 -4C 1 0 0 - 5C 0 1 1 -3 < +1? Yes! -4 < 1? Yes! N = 1, V = 0 N = 0, V = 1

  34. To compare signed numbers: • Compute R = A - B • A < B true if N and V are different • A<B = exor(N,V) after computation

More Related