Today • Binary addition • Representing negative numbers Andrew H. Fagg: Embedded RealTime Systems: Binary Arithmetic 2 Binary Addition Consider the following binary numbers: 00100110 00101011 How do we add these numbers? Andrew H. Fagg: Embedded RealTime Systems: Binary Arithmetic 3 Binary Addition 00100110 00101011 1 Andrew H. Fagg: Embedded RealTime Systems: Binary Arithmetic 4 Binary Addition 00100110 00101011 01 And we have a carry now! Andrew H. Fagg: Embedded RealTime Systems: Binary Arithmetic 5 Binary Addition 00100110 00101011 001 And we have a carry again! Andrew H. Fagg: Embedded RealTime Systems: Binary Arithmetic 6 Binary Addition 00100110 00101011 0001 and again! Andrew H. Fagg: Embedded RealTime Systems: Binary Arithmetic 7 Binary Addition 00100110 00101011 10001 Andrew H. Fagg: Embedded RealTime Systems: Binary Arithmetic 8 Binary Addition 00100110 00101011 010001 One more carry! Andrew H. Fagg: Embedded RealTime Systems: Binary Arithmetic 9 Binary Addition 00100110 00101011 01010001 Andrew H. Fagg: Embedded RealTime Systems: Binary Arithmetic 10 Binary Addition Behaves just like addition in decimal, but: • We carry to the next digit any time the sum of the digits is 2 (decimal) or greater Andrew H. Fagg: Embedded RealTime Systems: Binary Arithmetic 11 Negative Numbers So far we have only talked about representing non-negative integers • What can we add to our binary representation that will allow this? Andrew H. Fagg: Embedded RealTime Systems: Binary Arithmetic 21 Representing Negative Numbers One possibility: • Add an extra bit that indicates the sign of the number • We call this the “sign-magnitude” representation Andrew H. Fagg: Embedded RealTime Systems: Binary Arithmetic 22 Sign Magnitude Representation +12 0 0001100 Andrew H. Fagg: Embedded RealTime Systems: Binary Arithmetic 23 Sign Magnitude Representation +12 0 0001100 -12 1 0001100 Andrew H. Fagg: Embedded RealTime Systems: Binary Arithmetic 24 Sign Magnitude Representation +12 0 0001100 -12 1 0001100 What is the problem with this approach? Andrew H. Fagg: Embedded RealTime Systems: Binary Arithmetic 25 Sign Magnitude Representation What is the problem with this approach? • Some of the arithmetic operators that we have already developed do not do the right thing Andrew H. Fagg: Embedded RealTime Systems: Binary Arithmetic 26 Sign Magnitude Representation Operator problems: • For example, we have already designed a counter (that implements an ‘increment’ operation) -12 1 0001100 Andrew H. Fagg: Embedded RealTime Systems: Binary Arithmetic 27 Sign Magnitude Representation Operator problems: -12 1 0001100 Increment Andrew H. Fagg: Embedded RealTime Systems: Binary Arithmetic 28 Sign Magnitude Representation Operator problems: -12 1 0001100 Increment 1 0001101 Andrew H. Fagg: Embedded RealTime Systems: Binary Arithmetic 29 Sign Magnitude Representation Operator problems: -12 1 0001100 Increment -13 1 0001101 !!!! Andrew H. Fagg: Embedded RealTime Systems: Binary Arithmetic 30 Representing Negative Numbers An alternative: • When taking the additive inverse of a number, invert all of the individual bits • The leftmost bit still determines the sign of the number Andrew H. Fagg: Embedded RealTime Systems: Binary Arithmetic 31 One’s Complement Representation 12 0 0001100 Invert -12 1 1110011 Andrew H. Fagg: Embedded RealTime Systems: Binary Arithmetic 32 One’s Complement Representation 12 0 0001100 Invert -12 1 1110011 Increment 1 1110100 Andrew H. Fagg: Embedded RealTime Systems: Binary Arithmetic 33 One’s Complement Representation 12 0 0001100 Invert -12 1 1110011 Increment -11 1 1110100 Andrew H. Fagg: Embedded RealTime Systems: Binary Arithmetic 34 One’s Complement Representation What problems still exist? Andrew H. Fagg: Embedded RealTime Systems: Binary Arithmetic 35 One’s Complement Representation What problems still exist? • We have two distinct representations of ‘zero’: 0 0000000 1 0000000 Andrew H. Fagg: Embedded RealTime Systems: Binary Arithmetic 36 One’s Complement Representation What problems still exist? • We can’t directly add a positive and a negative number: 12 0 0001100 + + -5 1 1111010 Andrew H. Fagg: Embedded RealTime Systems: Binary Arithmetic 37 One’s Complement Representation 12 + -5 0 0001100 + 1 1111010 0 0000110 Andrew H. Fagg: Embedded RealTime Systems: Binary Arithmetic 38 One’s Complement Representation 12 + -5 0 0001100 + 1 1111010 6 0 0000110 !!!! Andrew H. Fagg: Embedded RealTime Systems: Binary Arithmetic 39 Representing Negative Numbers An alternative: (a little intuition first) 0 0 0000000 Decrement Andrew H. Fagg: Embedded RealTime Systems: Binary Arithmetic 40 Representing Negative Numbers An alternative: (a little intuition first) 0 0 0000000 Decrement 1 1111111 Andrew H. Fagg: Embedded RealTime Systems: Binary Arithmetic 41 Representing Negative Numbers An alternative: (a little intuition first) 0 0 0000000 Decrement Define this as -1 1 1111111 Andrew H. Fagg: Embedded RealTime Systems: Binary Arithmetic 42 Representing Negative Numbers A few more numbers: 3 2 1 0 -1 -2 -3 0 0 0 0 1 1 1 0000011 0000010 0000001 0000000 1111111 1111110 1111101 Andrew H. Fagg: Embedded RealTime Systems: Binary Arithmetic 46 Two’s Complement Representation In general, how do we take the additive inverse of a binary number? Andrew H. Fagg: Embedded RealTime Systems: Binary Arithmetic 47 Two’s Complement Representation In general, how do we take the additive inverse of a binary number? • Invert each bit and then add ‘1’ Andrew H. Fagg: Embedded RealTime Systems: Binary Arithmetic 48 Two’s Complement Representation Invert each bit and then add ‘1’ 5 0 0000101 Two’s complement -5 1 1111011 Andrew H. Fagg: Embedded RealTime Systems: Binary Arithmetic 49 Two’s Complement Representation Now: let’s try adding a positive and a negative number: 12 + -5 0 0001100 + 1 1111011 Andrew H. Fagg: Embedded RealTime Systems: Binary Arithmetic 50 Two’s Complement Representation Now: let’s try adding a positive and a negative number: 12 + -5 0 0001100 + 1 1111011 0 0000111 Andrew H. Fagg: Embedded RealTime Systems: Binary Arithmetic 51 Two’s Complement Representation Now: let’s try adding a positive and a negative number: 12 + -5 0 0001100 + 1 1111011 7 0 0000111 Andrew H. Fagg: Embedded RealTime Systems: Binary Arithmetic 52 Two’s Complement Representation Two’s complement is used for integer representation in today’s processors Andrew H. Fagg: Embedded RealTime Systems: Binary Arithmetic 53 Two’s Complement Representation Two’s complement is used for integer representation in today’s processors One oddity: we can represent one more negative number than we can positive numbers Andrew H. Fagg: Embedded RealTime Systems: Binary Arithmetic 54 Implementing Subtraction How do we implement a ‘subtraction’ operator? (e.g., A – B) Andrew H. Fagg: Embedded RealTime Systems: Binary Arithmetic 55 Implementing Subtraction How do we implement a ‘subtraction’ operator? (e.g., A – B) • Take the 2s complement of B • Then add this number to A Andrew H. Fagg: Embedded RealTime Systems: Binary Arithmetic 56