Post on 14-Jan-2016
1
Arithmetic and Logic Arithmetic and Logic Operations Operations
Patt and Patel Ch. 2 & 3Patt and Patel Ch. 2 & 3
2
x 0011+y +0001 sum 0100
Or in tabular form…
Binary Addition
Carry InCarry In AA BB SumSum Carry OutCarry Out
00 00 00 00 00
00 00 11 11 00
00 11 00 11 00
00 11 11 00 11
11 00 00 11 00
11 00 11 00 11
11 11 00 00 11
11 11 11 11 11
3
Binary Addition
a b
sumco ci
And as a full adder…
4-bit Ripple-Carry adder:• Carry values propagate from bit to bit• Like pencil-and-paper addition• Time proportional to number of bits• “Lookahead-carry” can propagate
carry proportional to log(n) with morespace.
a b
sumco ci
a b
sumco ci
a b
sumco ci
a b
sumco ci
4
Addition: unsigned
Just like the simple addition given earlier:
Examples:
(we are ignoring overflow for now)
100001 (33) 00001010 (10) + 011101 (29) + 00001110 (14)
111110 (62) 00011000 (24)
5
Addition: 2’s complement
•Just like unsigned addition•Assume 6-bit and observe:
000011 (3)+111100 (-4)
111111 (-1)
101000 (-24)+010000 (16)
111000 (-8)
111111 (-1)+001000 (8)
1000111 (7)
•Ignore carry-outs (overflow)•Sign bit is in the 2n-1 bit position•What does this mean for adding different signs?
6
Addition: 2’s complement
-20 + 15
5 + 12
-12 + -25
More examples: Convert to 2SC and do the addition
7
Addition: sign magnitude
• Add magnitudes only, just like unsigned addition
• Do not carry into the sign bit• If a carry out of the MSB of magnitude then
overflowed• Add only integers of like sign (“+ to +” OR “–
to –” )• Sign of the result is same as sign of the
addends
8
Examples:
0 0101 (5)+ 0 0011 (3)
0 1000 (8)
1 1010 (-10)+ 1 0011 (-3)
1 1101 (-13)
0 01011 (11)+ 1 01110 (-14)
Cannot add!!! This is a subtraction
Addition: sign magnitude
9
SubtractionGeneral rules:
1 – 1 = 00 – 0 = 01 – 0 = 1
10 – 1 = 10 – 1 = need to borrow!
•Or replace (x – y) with x + (-y)•Can replace subtraction with additive inverse and addition
10
Subtraction: 2’s complement
Don’t. Just use addition:
x – y x + (-y)
Example:
10110 (-10) - 00011 (3)
10110 (-10) + 11101 (-3)
1 10011 (-13)
11
Subtraction: 2’s complement
Can also flip bits of bottom # and add an LSB carry in, so for -10 - 3 we get:
1 10110 + 11100 110011
(throw away carry out)
Addition and subtraction are simple in 2’s complement,just need an adder and inverters.
“add 1”
“flip bits of bottom number”
12
Subtraction: Unsigned
For n-bits use the 2’s complement method and overflowif negative
11100 (+28) - 10110 (+22)
Becomes1
11100+0100
1
100110
Only take 5 bits of result
13
Subtraction: Sign Subtraction: Sign MagnitudeMagnitude
• If signs are different, then change If signs are different, then change the problem to additionthe problem to addition
• If the signs are the same then do If the signs are the same then do subtractionsubtraction
– compare magnitudes– subtract smaller from larger– if the order was switched, then switch
the sign of the result
14
Subtraction: sign magnitude
0 11000 (24)- 0 00111 (7) 1 10001 (-17)
becomes
0 00111 (7)- 0 11000 (24)
Switched sign since the order of the subtraction was reversed
1 11000 (-24)- 1 00010 (-2)
1 10110 (-22)
For example:
Evaluation of the sign bit is not part of the arithmetic, it is determined by comparing magnitudes
15
Overflow in Addition
Unsigned: When there is a carry out of the MSB
1000 (8) + 1001 (9) 10001 (1)
16
Signed magnitude: When there is a carry out of theMSB of the magnitude
1 1000 (-8) +1 1001 (-9)
Overflow in Addition
carry out from MSB of magnitude
110001 (-1)
17
2’s complement: When the signs of the addends are the same, but the sign of the result is different
0011 (3) + 0110 (6)
Adding 2 numbers of opposite signs never overflows
Why?
Overflow in Addition
1001 (-7)
18
Overflow in Subtraction
Unsigned: if result is negative
Signed magnitude: never happens when actually doing subtraction
2’s complement: never do subtraction, so use the addition rule on the addition operation done.
19
Unsigned Binary MultiplicationThe multiplicand is multiplied by the multiplier toproduce the product, the sum of partial products
multiplicand X multiplier = product
0011 (+3) x 0110 (+6) 0000 0011 0011 0000 0010010 (+18)
•Longhand, it looks just like decimal•Result can require twice as many bits as the largermultiplicand (why?)
20
0011 (3) x 1011 (-5)
2’s Complement Multiplication
•If negative multiplicand, just sign-extend it.•If negative multiplier, take 2SC of both multiplicand andmultiplier (-7 x -3 = 7 x 3, and 7 x –3 = -7 x 3)
1101 (-3) x 0101 (+5) 11111111101 0000000000 111111101 + 00000000 11110001 (-15)
Only need 8 bits for result
21
Division
Only required to know for unsigned binary
Just like you do with decimal long hand
14/3 = …
22
Logical Operations
Operate on raw bits with 1 = true and 0 = false
In1In1 In2In2 && || ~(&~(&))
~(|)~(|) ^̂ ~(^~(^))
00 00 00 00 11 11 00 11
00 11 00 11 11 00 11 00
11 00 00 11 11 00 11 00
11 11 11 11 00 00 00 11
(AND OR NAND NOR XOR XNOR )
23
In LC-3, done bit-wise in parallel for corresponding bits
X = 0011Y = 1010
X AND Y = ?
Logical Operations
Example:
So how do an OR? How about an XOR?
24
MaskingMaskingMaskingMasking refers to using AND refers to using AND operations to isolate bits in a word operations to isolate bits in a word
Example:ab .FILL 0x6162mask .FILL 0x00ffb .FILL 0x0062
LD R2, bLD R5, abLD R3, maskAND R1, R5, R3JSR Sub ; R0 = R2 – R1BRz found_b ; ‘b’ is 0x62 in ASCII
Does this code find “b”?
25
How about adding this, does it work?How about adding this, does it work?
ab .FILL 0x6162mask2 .FILL 0xff00a .FILL 0x0061
LD R2, aLD R5, abLD R3, mask2AND R1, R5, R3JSR Sub ; R0 = R2 – R1BRz found_a ; ‘a’ is 0x61 in ASCII
Does this code find “a”?
Masking
26
Shifts and Rotates
Logical right•Move bits to the right, same order•Throw away the bit that pops off the LSB•Introduce a 0 into the MSB
00110101 00011010 (shift right by 1 )
Logical left•Move bits to the left, same order•Throw away the bit that pops off the MSB•Introduce a 0 into the LSB
00110101 11010100 (shift left by 2 )•Can do by adding number to it self
Logical Operations
27
Logical Operations: Shifts and Rotates
Arithmetic right•Move bits to the right, same order•Throw away the bit that pops off the LSB•Reproduce the original MSB into the new MSB•Alternatively, shift the bits, and then do sign extension
00110101 00011010 (right by 1)1100 1111 (right by 2)
Arithmetic left•Move bits to the left, same order•Throw away the bit that pops off the MSB•Introduce a 0 into the LSB
00110101 01101010 (left by 1)
28
Logical Operations: Shifts and Rotates
Rotate left•Move bits to the left, same order•Put the bit(s) that pop off the MSB into the LSB•No bits are thrown away or lost
00110101 01101010 (rotate by 1)1100 1001 (rotate by 1)
Rotate right•Move bits to the right, same order•Put the bit that pops off the LSB into the MSB•No bits are thrown away or lost
00110101 10011010 (rotate by 1)1101 0111 (rotate by 2)
29
Questions?Questions?
30