comp 122/l lecture 2 - kyle deweyoutline • operations on binary values • and, or, xor, not •...
TRANSCRIPT
![Page 1: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/1.jpg)
COMP 122/L Lecture 2Kyle Dewey
![Page 2: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/2.jpg)
Outline
• Operations on binary values
• AND, OR, XOR, NOT
• Bit shifting (left, two forms of right)
• Addition
• Subtraction
• Twos complement
![Page 3: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/3.jpg)
Bitwise Operations
![Page 4: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/4.jpg)
Bitwise AND
• Similar to logical AND (&&), except it works on a bit-by-bit manner
• Denoted by a single ampersand: &
(1001 & 0101)= 0001
![Page 5: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/5.jpg)
Bitwise OR
• Similar to logical OR (||), except it works on a bit-by-bit manner
• Denoted by a single pipe character: |
(1001 | 0101)= 1101
![Page 6: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/6.jpg)
Bitwise XOR
• Exclusive OR, denoted by a carat: ^
• Similar to bitwise OR, except that if both inputs are 1 then the result is 0
(1001 ^ 0101)= 1100
![Page 7: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/7.jpg)
Bitwise NOT
• Similar to logical NOT (!), except it works on a bit-by-bit manner
• Denoted by a tilde character: ~
~1001 = 0110
![Page 8: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/8.jpg)
Shift Left
• Move all the bits N positions to the left, subbing in N 0s on the right
![Page 9: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/9.jpg)
Shift Left
• Move all the bits N positions to the left, subbing in N 0s on the right
1001
![Page 10: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/10.jpg)
Shift Left
• Move all the bits N positions to the left, subbing in N 0s on the right
1001 << 2 =100100
![Page 11: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/11.jpg)
Shift Left
• Useful as a restricted form of multiplication
• Question: how?
1001 << 2 =100100
![Page 12: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/12.jpg)
Shift Left as Multiplication
• Equivalent decimal operation:
234
![Page 13: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/13.jpg)
Shift Left as Multiplication
• Equivalent decimal operation:
234 << 1 =2340
![Page 14: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/14.jpg)
Shift Left as Multiplication
• Equivalent decimal operation:
234 << 1 =2340
234 << 2 =23400
![Page 15: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/15.jpg)
Multiplication• Shifting left N positions multiplies by (base)N
• Multiplying by 2 or 4 is often necessary (shift left 1 or 2 positions, respectively)
• Often a whooole lot faster than telling the processor to multiply
• Compilers try hard to do this
234 << 2 =23400
![Page 16: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/16.jpg)
Shift Right
• Move all the bits N positions to the right, subbing in either N 0s or N 1s on the left
• Two different forms
![Page 17: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/17.jpg)
Shift Right
• Move all the bits N positions to the right, subbing in either N 0s or N (whatever the leftmost bit is)s on the left
• Two different forms1001 >> 2 =either 0010 or 1110
![Page 18: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/18.jpg)
Shift Right Trick
• Question: If shifting left multiplies, what does shift right do?
![Page 19: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/19.jpg)
Shift Right Trick
• Question: If shifting left multiplies, what does shift right do?
• Answer: divides in a similar way, but truncates result
![Page 20: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/20.jpg)
Shift Right Trick
• Question: If shifting left multiplies, what does shift right do?
• Answer: divides in a similar way, but truncates result
234
![Page 21: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/21.jpg)
Shift Right Trick
• Question: If shifting left multiplies, what does shift right do?
• Answer: divides in a similar way, but truncates result
234 >> 1 =23
![Page 22: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/22.jpg)
Two Forms of Shift Right
• Subbing in 0s makes sense
• What about subbing in the leftmost bit?
• And why is this called “arithmetic” shift right?
1100 (arithmetic)>> 1 =1110
![Page 23: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/23.jpg)
Answer...Sort of
• Arithmetic form is intended for numbers in twos complement, whereas the non-arithmetic form is intended for unsigned numbers
![Page 24: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/24.jpg)
Twos Complement
![Page 25: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/25.jpg)
Problem
• Binary representation so far makes it easy to represent positive numbers and zero
• Question: What about representing negative numbers?
![Page 26: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/26.jpg)
Twos Complement
• Way to represent positive integers, negative integers, and zero
• If 1 is in the most significant bit (generally leftmost bit in this class), then it is negative
![Page 27: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/27.jpg)
Decimal to Twos Complement
• Example: -5 decimal to binary (twos complement)
![Page 28: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/28.jpg)
Decimal to Twos Complement
• Example: -5 decimal to binary (twos complement)
• First, convert the magnitude to an unsigned representation
![Page 29: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/29.jpg)
Decimal to Twos Complement
• Example: -5 decimal to binary (twos complement)
• First, convert the magnitude to an unsigned representation
5 (decimal) = 0101 (binary)
![Page 30: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/30.jpg)
Decimal to Twos Complement
• Then, take the bits, and negate them
![Page 31: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/31.jpg)
Decimal to Twos Complement
• Then, take the bits, and negate them
0101
![Page 32: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/32.jpg)
Decimal to Twos Complement
• Then, take the bits, and negate them
~0101 = 1010
![Page 33: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/33.jpg)
Decimal to Twos Complement
• Finally, add one:
![Page 34: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/34.jpg)
Decimal to Twos Complement
• Finally, add one:
1010
![Page 35: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/35.jpg)
Decimal to Twos Complement
• Finally, add one:1010 + 1 =1011
![Page 36: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/36.jpg)
Twos Complement to Decimal
• Same operation: negate the bits, and add one
![Page 37: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/37.jpg)
Twos Complement to Decimal
• Same operation: negate the bits, and add one
1011
![Page 38: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/38.jpg)
Twos Complement to Decimal
• Same operation: negate the bits, and add one
~1011 = 0100
![Page 39: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/39.jpg)
Twos Complement to Decimal
• Same operation: negate the bits, and add one
0100
![Page 40: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/40.jpg)
Twos Complement to Decimal
• Same operation: negate the bits, and add one
0100 + 1 =0101
![Page 41: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/41.jpg)
Twos Complement to Decimal
• Same operation: negate the bits, and add one
0100 + 1 =0101 =-5
We started with 1011 - negative
![Page 42: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/42.jpg)
Intuition• Modular arithmetic, with the convention that a
leading 1 bit means negative
000
001
010
011
100
101
110
111Denotes+1
-This is the intuition from Wikipedia, which makes a whole lot more sense
![Page 43: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/43.jpg)
Intuition• Modular arithmetic, with the convention that a
leading 1 bit means negative
000
001
010
011
100
101
110
111Denotes+1
(least +)(least -)
(most +)
(most -)
(zero)
-This is the intuition from Wikipedia, which makes a whole lot more sense-There is still a lot of detail missing here - it’s not necessary to understand in order to work with this. There is actually quite a bit of mathematics behind why this works
![Page 44: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/44.jpg)
Intuition• Modular arithmetic, with the convention that a
leading 1 bit means negative
000
001
010
011
100
101
110
111Denotes+1
1
0
2
3
-4
-3
-2
-1
-This is the intuition from Wikipedia, which makes a whole lot more sense-There is still a lot of detail missing here - it’s not necessary to understand in order to work with this. There is actually quite a bit of mathematics behind why this works
![Page 45: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/45.jpg)
Negation of 1
000
001
010
011
100
101
110
111
-Take our wheel from before
![Page 46: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/46.jpg)
Negation of 1
000
001
010
011
100
101
110
111
-This is 1
![Page 47: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/47.jpg)
Negation of 1
000
001
010
011
100
101
110
111
-Inverted bits
![Page 48: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/48.jpg)
Negation of 1
000
001
010
011
100
101
110
111
-Add 1-This is exactly what we expected - binary 111 represents decimal -1
![Page 49: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/49.jpg)
Consequences
• What is the negation of 000?
000
001
010
011
100
101
110
111
-Negate all bits: 000 -> 111-Add one: 000-Technically, adding one resulted in 1000, but that got cut off
![Page 50: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/50.jpg)
Consequences
• What is the negation of 100?
000
001
010
011
100
101
110
111
-Negate all bits: 100 -> 011-Add one: 100-Uh oh...this states that the negation of -4 is -4.-Underlying problem is that we don’t have a representation for 4 with just three bits
![Page 51: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/51.jpg)
Arithmetic Shift Right• Not exactly division by a power of two
• Consider -3 / 2
000
001
010
011
100
101
110
111 1
0
2
3
-4
-3
-2
-1
-101 (-3) shifted right yields 110 (-2), NOT 111 (-1) as expected from typical integer division-Integer division rounds towards zero, whereas shift right rounds towards negative infinity-This means they work _identically_ for positive values, but not for negative values (also meaning they are always the same for _unsigned_ values)
![Page 52: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/52.jpg)
Addition
![Page 53: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/53.jpg)
Building Up Addition• Question: how might we add the following,
in decimal?986
+123----
?
![Page 54: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/54.jpg)
Building Up Addition• Question: how might we add the following,
in decimal?986
+123----
?
6+3--?
![Page 55: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/55.jpg)
Building Up Addition• Question: how might we add the following,
in decimal?986
+123----
?
6+3--9
8+2--?
![Page 56: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/56.jpg)
Building Up Addition• Question: how might we add the following,
in decimal?986
+123----
?
6+3--9
8+2--0
Carry: 1
![Page 57: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/57.jpg)
Building Up Addition• Question: how might we add the following,
in decimal?986
+123----
?
6+3--9
8+2--0
19
+1--?
![Page 58: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/58.jpg)
Building Up Addition• Question: how might we add the following,
in decimal?986
+123----
?
6+3--9
8+2--0
19
+1--1
Carry: 1
![Page 59: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/59.jpg)
Building Up Addition• Question: how might we add the following,
in decimal?986
+123----
?
6+3--9
8+2--0
19
+1--1
1+0--1
![Page 60: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/60.jpg)
Core Concepts
• We have a “primitive” notion of adding single digits, along with an idea of carrying digits
• We can build on this notion to add numbers together that are more than one digit long
![Page 61: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/61.jpg)
Now in Binary
• Arguably simpler - fewer one-bit possibilities
0+0--?
0+1--?
1+0--?
1+1--?
![Page 62: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/62.jpg)
Now in Binary
• Arguably simpler - fewer one-bit possibilities
0+0--0
0+1--1
1+0--1
1+1--0
Carry: 1
![Page 63: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/63.jpg)
Chaining the Carry• Also need to account for any input carry
10
+0--1
10
+1--0
11
+0--0
11
+1--1
00
+0--0
00
+1--1
01
+0--1
01
+1--0
Carry: 1 Carry: 1 Carry: 1
Carry: 1
![Page 64: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/64.jpg)
Adding Multiple Bits
• How might we add the numbers below?
011+001
------
![Page 65: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/65.jpg)
Adding Multiple Bits
• How might we add the numbers below?
011+001
------
0
-Need an initial carry-in of zero
![Page 66: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/66.jpg)
Adding Multiple Bits
• How might we add the numbers below?
011+001
------
0
0
1
-Need an initial carry-in of zero
![Page 67: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/67.jpg)
Adding Multiple Bits
• How might we add the numbers below?
011+001
------
0
0
1
0
1
-Need an initial carry-in of zero
![Page 68: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/68.jpg)
Adding Multiple Bits
• How might we add the numbers below?
011+001
------
0
0
1
0
1
1
0
-Need an initial carry-in of zero
![Page 69: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/69.jpg)
Adding Multiple Bits
• How might we add the numbers below?
011+001
------
0
0
1
0
1
1
0
Output Carry Bit Result Bits
-Need an initial carry-in of zero
![Page 70: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/70.jpg)
Another Example
111+001
------
![Page 71: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/71.jpg)
Another Example
111+001
------
0
![Page 72: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/72.jpg)
Another Example
111+001
------
0
0
1
![Page 73: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/73.jpg)
Another Example
111+001
------
0
0
1
0
1
![Page 74: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/74.jpg)
Another Example
111+001
------
0
0
1
0
1
0
1
Output Carry Bit Result Bits
-Now we have an output carry bit of 1. What does this mean?
![Page 75: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/75.jpg)
Output Carry Bit Significance
• For unsigned numbers, it indicates if the result did not fit all the way into the number of bits allotted
• May be an error condition for software
![Page 76: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/76.jpg)
Signed Addition
• Question: what is the result of the following operation?
011+011----
?
![Page 77: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/77.jpg)
Signed Addition
• Question: what is the result of the following operation?
011+011----0110
-If these are treated as signed numbers in two’s complement, then we need a leading 0 to indicate that this is a positive number-Truncated to three bits, the result is a negative number!
![Page 78: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/78.jpg)
Overflow
• In this situation, overflow occurred: this means that both the operands had the same sign, and the result’s sign differed
011+011----110
• Possibly a software error
![Page 79: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/79.jpg)
Overflow vs. Carry• These are different ideas
• Carry is relevant to unsigned values
• Overflow is relevant to signed values
011+011----110
Overflow; No Carry
111+001----000
No Overflow; Carry
111+100----011
Overflow; Carry
001+001----010
No Overflow; No Carry
-As to when is it a problem, this all depends on exactly what it is you’re doing
![Page 80: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/80.jpg)
Subtraction
![Page 81: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/81.jpg)
Subtraction
• Have been saying to invert bits and add one to second operand
• Could do it this way in hardware, but there is a trick
001-001----
?
001+111----
?
Hint: these twoquestions are
equivalent
![Page 82: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/82.jpg)
Subtraction Trick
• Assume we can cheaply invert bits, but we want to avoid adding twice (once to add 1 and once to add the other result)
• How can we do this easily?
![Page 83: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/83.jpg)
Subtraction Trick
• Assume we can cheaply invert bits, but we want to avoid adding twice (once to add 1 and once to add the other result)
• How can we do this easily?
• Set the initial carry to 1 instead of 0
![Page 84: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/84.jpg)
Subtraction Example
0101-0011----
![Page 85: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/85.jpg)
Subtraction Example
0101-0011----
Invert 0011
![Page 86: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/86.jpg)
Subtraction Example
0101-0011----
Invert 00111100
![Page 87: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/87.jpg)
Subtraction Example
0101-0011----
Invert 00111100
Equivalent to
![Page 88: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/88.jpg)
Subtraction Example
0101-0011----
Invert 00111100
Equivalent to0101
+1100----
1
-An initial carry-in of 1 is equivalent to adding 1 and then adding the other operand
![Page 89: COMP 122/L Lecture 2 - Kyle DeweyOutline • Operations on binary values • AND, OR, XOR, NOT • Bit shifting (left, two forms of right) • Addition • Subtraction • Twos complement](https://reader030.vdocuments.net/reader030/viewer/2022040520/5e78ac32928d151869176f64/html5/thumbnails/89.jpg)
Subtraction Example
0101-0011----
Invert 00111100
Equivalent to0101
+1100----
1
0
1
1
0
0
1
0
1
-An initial carry-in of 1 is equivalent to adding 1 and then adding the other operand