Upload
avice-thomas
View
258
Download
6
Embed Size (px)
Citation preview
Binary Arithmetic
2
Outline
• Binary Addition• 2’s complement• Binary Subtraction• Half Adder • Logisim
3
Binary Addition
• How to add two binary numbers?• Single bit:
0+ 0
0
0+ 1
1
1+ 0
1
1+ 110
carry bit
4
Binary Addition
• What is a carry bit?• Same idea as “carry the 1” in decimal arithmetic:
13+ 9
1013
+ 92
1013
+ 922
5
Binary Addition
• carry bit gets “carried over” to the next bit (to the left..)• Just like decimal addition
0+ 0
0
0+ 1
1
1+ 0
1
1+ 110
carry bit
6
Binary Addition
• Example #1
0100 0011+ 0000
1010
7
Binary Addition
• Example #1
0100 0011+ 0000
10100100 1101
carry bit
8
Binary Addition
• Example #1• You can always check your work by converting to decimal
0100 0011+ 0000
10100100 1101
67+
1077
9
Binary Addition
• Example #2
1100 0110+ 0100
1010
10
Binary Addition
• Example #2
1001 11001100 0110
+ 0100 1010
1 0001 00009th
bit!?!
11
Binary Addition
• Example #2• If we must store the answer in a single byte, 9th bit gets ignored…• This is known as overflow
1100 0110+ 0100
10101 0001
0000
12
Binary Addition
• Example #2
198+ 74
16
16 !?! Shouldn’t the answer be 272?
1100 0110+ 0100
10101 0001
0000
13
Binary Addition
• What’s the largest number that can be stored in 8-bits?
1111 1111
???
14
Binary Addition
• What’s the largest number that can be stored in 8-bits?
• 272 is greater than 255• 272 cannot be represented using 8 bits• Has this ever happened to you?
1111 1111
255
15
Outline
• Binary Addition• 2’s complement• Binary Subtraction• Half Adder • Logisim
16
2’s Complement
• 8-bits can be used to represent numbers between 0 and 255• How do we represent negative numbers in binary?
• Drumroll…. 2’s complement!!• Makes addition, subtraction, multiplication easier• Most common way to represent signed numbers
• Signed: positive AND negative numbers
• And no, it’s not 2’s compliment• “Hey 2, your hair looks nice today..”
17
2’s Complement
• In 2’s complement system, the leftmost bit indicates the sign• 0 for positive• 1 for negative
• When the leftmost bit is 0, the remaining bits are interpreted as before• 0000 0001 => 1• 0111 1111 => 127
18
2’s Complement
• When the leftmost bit is 1, we do the following to obtain the signed decimal representation:
1. Complement (invert) the binary digits (0 => 1; 1 => 0)2. Convert binary digits to decimal number3. Multiply by -14. Subtract 1
19
2’s Complement
• Example #1: What is the 2’s complement value of 1100 0110?
1100 0110
1. Invert bits: 0011 1001
2. Convert to decimal: 57
3. Multiple by -1: -574. Subtract 1: -58
20
2’s Complement
• Example #2: What is the 2’s complement value of 1001 1001?• Your turn!
1001 1001
21
2’s Complement
• Example #2: What is the 2’s complement value of 1001 1001?
1001 1001
1. Invert bits: 0110 0110
2. Convert to decimal: 102
3. Multiple by -1: -1024. Subtract 1: -103
22
2’s Complement
• Decimal to 2’s complement• If the number is positive:
1. leftmost bit is 02. remaining bits identical to unsigned binary number
• E.g., Represent the number 97 using 8-bits, 2’s complement
97 = 64 + 32 + 1= 26 + 25 + 20
= 0110 0001
23
2’s Complement
• Decimal to 2’s complement
• If decimal number is negative:1. add 12. multiply by -1 (to create positive number)3. create binary sequence4. invert bits
24
2’s Complement
• Example #3: represent -97 using 8-bits, 2’s complement
1. add 1: -97 + 1 = -96
2. multiply by -1: -96 × -1 = 96
3. get binary: 96 = 0110 0000
4. invert bits: 1001 1111
-97 => 1001 1111
25
2’s Complement
• Example #4: represent -123 using 8-bits, 2’s complement
1. add 1: -123 + 1 = -122
2. multiply by -1: -122 × -1 = 122
3. get binary: 122 = 0111 1010
4. invert bits: 1000 0101
-123 => 1000 0101
26
Break Time!!!
27
Outline
• Binary Addition• 2’s complement• Binary Subtraction• Half Adder • Logisim
28
Binary Subtraction
• To subtract two binary numbers, X – Y,1. Invert Y => Y’2. Add 1 to Y’3. Add X + Y’
• We are basically taking the 2’s complement of Y (Y’) before adding it to X
29
Binary Subtraction
• Example #5: 0010 0001- 0000
10101. invert Y 00001010 => 11110101
2. add 1 to Y’11110101 + 00000001
= 11110110
3. add Y’ to X0010 0001
+ 1111 0110
1 0001 0111
this 9th bit 1 gets ignored
30
Binary Subtraction
• It’s always good to verify your work…
0010 0001- 0000
10100001 0111
33- 10
23
31
Binary Subtraction
• Example #6
0001 1001- 1110
0010
32
Binary Subtraction
• Example #6 0001 1001- 1110
00101. invert Y 1110 0010 => 0001 1101
2. add 1 to Y’0001 1101 + 0000 0001 =
0001 1110
3. add Y’ to X0001 1001
+ 0001 1110 0011 0111
33
Binary Subtraction
• Verify…
0001 1001- 1110
00100011 0111
25- -30
55
34
Outline
• Binary Addition• 2’s complement• Binary Subtraction• Half Adder • Logisim
Half Adder
• Can use logic gates to construct adder circuit• Circuit is capable of binary addition
• Half Adder has two inputs (A, B) and two outputs (S, C)• S: sum• C: carry
35
Half Adder
A
B
S
C
36
Half Adder
• Truth table for Half Adder
Half Adder
A
B
S
C
A B S C
0 0 0 0
0 1 1 0
1 0 1 0
1 1 0 1
S : sum of A + B
C : carry bit
37
Half Adder
• Logic gate circuit for Half Adder?• A, B inputs• S, C outputs A B S C
0 0 0 0
0 1 1 0
1 0 1 0
1 1 0 1
38
Half Adder
• Logic gate circuit for Half Adder?• A, B inputs• S, C outputs A B S C
0 0 0 0
0 1 1 0
1 0 1 0
1 1 0 1
39
Half Adder
• How would you expand the Half Adder to create a:• 2-bit adder?• 4-bit adder?• 8-bit adder?• …?
• This will be part of your homework…
40
Outline
• Binary Addition• 2’s complement• Binary Subtraction• Half Adder • Logisim
41
Logisim
• Logisim is FREE logic gate simulation software• Please download / install this software
• http://www.cburch.com/logisim/index.html• It should be on the lab machines, too
42
Next Steps
• Download / install Logisim• Complete homework #2
• Data representation• Binary arithmetic• Create (useful) logic gate circuits using Logisim
• Next lecture: Micro-architecture