12. Multiplication (binary)
1101
1011
1101
11010
1101000
10001111
It’s interesting to note
that binary multiplication
is a sequence of shifts
and adds of the first
term (depending on the
bits in the second term.
110100 is missing here
because the
corresponding bit in the
second terms is 0.
Admission.edhole.com
14. Representing numbers (ints)
Fixed, finite number of bits.
bits bytes C/C++ Intel Sun
8 1 char [s]byte byte
16 2 short [s]word half
32 4 int or long [s]dword word
64 8 long long [s]qword xword
15. Representing numbers (ints)
Fixed, finite number of bits.
bits Intel signed unsigned
8 [s]byte -27..+27-1 0..+28-1
16 [s]word -215..+215-1 0..+216-1
32 [s]dword -231..+231-1 0..+232-1
64 [s]qword -263..+263-1 0..+264-1
In general, for k bits, the unsigned range is [0..+2k-1] and
the signed range is [-2k-1..+2k-1-1].
16. Methods for representing signed ints.
1. signed magnitude
2. 1’s complement (diminished radix complement)
3. 2’s complement (radix complement)
4. excess bD-1
17. Signed magnitude
Ex. 4-bit signed magnitude
1 bit for sign
3 bits for magnitude
N N
0 0000 1000
1 0001 1001
2 0010 1010
3 0011 1011
4 0100 1100
5 0101 1101
6 0110 1110
7 0111 1111
18. Signed magnitude
Ex. 4-bit signed magnitude
1 bit for sign
3 bits for magnitude
N N
0 0000 1000
1 0001 1001
2 0010 1010
3 0011 1011
4 0100 1100
5 0101 1101
6 0110 1110
7 0111 1111
19. 1’s complement
(diminished radix complement)
Let x be a non-negative number.
Then –x is represented by bD-1+(-x) where
b = base
D = (total) # of bits (including the sign bit)
Ex. Let b=2 and D=4.
Then -1 is represented by 24-1-1 = 1410 or 11102.
20. 1’s complement
(diminished radix complement)
Let x be a non-negative number.
Then –x is represented by bD-1+(-x) where
b = base & D = (total) # of bits (including the sign bit)
Ex. What is the 9’s complement of 1238910?
Given b=10 and D=5. Then the 9’s complement of 12389
= 105 – 1 – 12389
= 100000 – 1 – 12389
= 99999 – 12389
= 87610
21. 1’s complement
(diminished radix complement)
Let x be a non-negative number.
Then –x is represented by bD-1+(-x)
where
b = base
D = (total) # of bits (including the sign
bit)
Shortcut for base 2?
All combinations used, but 2 zeros!
N N
0 0000 1111
1 0001 1110
2 0010 1101
3 0011 1100
4 0100 1011
5 0101 1010
6 0110 1001
7 0111 1000
22. 2’s complement
(radix complement)
Let x be a non-negative number.
Then –x is represented by bD+(-x).
Ex. Let b=2 and D=4. Then -1 is represented by 24-
1 = 15 or 11112.
Ex. Let b=2 and D=4. Then -5 is represented by 24
– 5 = 11 or 10112.
Ex. Let b=10 and D=5. Then the 10’s complement
of 12389 = 105 – 12389 = 100000 – 12389 = 87611.
23. 2’s complement
(radix complement)
Let x be a non-negative number.
Then –x is represented by bD+(-x).
Ex. Let b=2 and D=4. Then -1 is
represented by 24-1 = 15 or 11112.
Ex. Let b=2 and D=4. Then -5 is
represented by 24 – 5 = 11 or 10112.
Shortcut for base 2?
N N
0 0000 0000
1 0001 1111
2 0010 1110
3 0011 1101
4 0100 1100
5 0101 1011
6 0110 1010
7 0111 1001
24. 2’s complement
(radix complement)
Shortcut for base 2?
Yes! Flip the bits and add 1.
N N
0 0000 0000
1 0001 1111
2 0010 1110
3 0011 1101
4 0100 1100
5 0101 1011
6 0110 1010
7 0111 1001
25. 2’s complement
(radix complement)
Are all combinations of 4 bits used?
No. (Now we only have one zero.)
1000 is missing!
What is 1000?
Is it positive or negative?
Does -8 + 1 = -7 work in 2’s complement?
N N
0 0000 0000
1 0001 1111
2 0010 1110
3 0011 1101
4 0100 1100
5 0101 1011
6 0110 1010
7 0111 1001
26. excess bD-1 (biased
representation)
For pos, neg, and 0, x is represented by
bD-1 + x
Ex. Let b=2 and D=4. Then the excess 8 (24-1)
representation for 0 is 8+0 = 8 or 10002.
Ex. Let b=2 and D=4. Then excess 8 for -1 is 8 –
1 = 7 or 01112.
27. excess bD-1
For pos, neg, and 0, x is represented
by
bD-1 + x.
Ex. Let b=2 and D=4. Then the
excess 8 (24-1) representation for 0 is
8+0 = 8 or 10002.
Ex. Let b=2 and D=4. Then excess
8 for -1 is 8 – 1 = 7 or 01112.
N N
0 1000 1000
1 1001 0111
2 1010 0110
3 1011 0101
4 1100 0100
5 1101 0011
6 1110 0010
7 1111 0001
28. 2’s complement vs. excess bD-1
In 2’s, positives start with 0; in
excess, positives start with 1.
Both have one zero (positive).
Remaining bits are the same.
N N
0 1000 1000
1 1001 0111
2 1010 0110
3 1011 0101
4 1100 0100
5 1101 0011
6 1110 0010
7 1111 0001
29. Summary of methods for
representing signed ints.
signedMag sComp sComp excess
1 2 8
N n n n n n
n
0 0000 1000 1111 0000 1000 1000
1 0001 1001 1110 1111 0111 1001
2 0010 1010 1101 1110 0110 1010
3 0011 1011 1100 1101 0101 1011
4 0100 1100 1011 1100 0100 1100
5 0101 1101 1010 1011 0011 1101
6 0110 1110 1001 1010 0010 1110
7 0111 1111 1000 1001 0001 1111
1000=-8| 0000 unused
32. Addition w/ signed magnitude
algorithm
For A - B, change the sign of B and perform addition of
A + (-B) (as in the next step)
For A + B:
if (Asign==Bsign) then { R = |A| + |B|; Rsign = Asign; }
else if (|A|>|B|) then { R = |A| - |B|; Rsign = Asign; }
else if (|A|==|B|) then { R = 0; Rsign = 0; }
else { R = |B| - |A|; Rsign = Bsign; }
Complicated?
34. Representing numbers (ints)
using 2’s complement
Fixed, finite number of bits.
bits Intel signed
8 sbyte -27..+27-1
16 sword -215..+215-1
32 sdword -231..+231-1
64 sqword -263..+263-1
In general, for k bits, the signed range is [-2k-1..+2k-1-1].
So where does the extra negative value come from?
35. Representing numbers (ints)
Fixed, finite number of bits.
bits Intel signed
8 sbyte -27..+27-1
16 sword -215..+215-1
32 sdword -231..+231-1
64 sqword -263..+263-1
In general, for k bits, the signed range
is
[-2k-1..+2k-1-1].
So where does the extra negative value
come from?
n n
0 0000 0000
1 0001 1111
2 0010 1110
3 0011 1101
4 0100 1100
5 0101 1011
6 0110 1010
7 0111 1001
8 1000
36. Addition of 2’s complement
binary numbers
Consider 8-bit 2’s complement binary numbers.
Then the msb (bit 7) is the sign bit. If this bit is 0,
then this is a positive number; if this bit is 1, then
this is a negative number.
Addition of 2 positive numbers.
Ex. 40 + 58 = 98
1 1 1
00101000
00111010
01100010
37. Addition of 2’s complement
binary numbers
Consider 8-bit 2’s complement
binary numbers.
Addition of a negative to a
positive.
What are the values of these 2
terms?
-88 and 122
-88 + 122 = 34
1 1 1 1
10101000
01111010
1 00100010
41. Addition of 2’s complement
binary numbers
Carry vs. overflow when adding A + B
If A and B are of opposite sign, then overflow cannot
occur.
If A and B are of the same sign but the result is of
the opposite sign, then overflow has occurred (and
the answer is therefore incorrect).
Overflow occurs iff the carry into the sign bit differs from the
carry out of the sign bit.
42. Addition of 2’s complement
binary numbers
class test {
public static void main ( String
args[] )
{
byte A = 127;
byte B = 127;
byte result = (byte)(A + B);
System.out.println( "A + B = "
+ result );
}
}
#include <stdio.h>
int main ( int argc, char* argv[] )
{
char A = 127;
char B = 127;
char result = (char)(A + B);
printf( "A + B = %d n", result );
return 0;
} Result = -2 in both
Java (left) and C++
(right). Why?
43. Addition of 2’s complement
binary numbers
class test {
public static void main ( String
args[] )
{
byte A = 127;
byte B = 127;
byte result = (byte)(A + B);
System.out.println( "A + B = "
+ result );
}
}
Result = -2 in both Java and
C++.
Why?
What’s 127 as a 2’s
complement binary number?
01111111
01111111
11111110
What is 111111102?
Flip the bits: 00000001.
Then add 1: 00000010.
45. Addition with 1’s complement
Note: 1’s complement has two 0’s!
1’s complement addition is tricky
(end-around-carry).
N N
0 0000 1111
1 0001 1110
2 0010 1101
3 0011 1100
4 0100 1011
5 0101 1010
6 0110 1001
7 0111 1000
46. 8-bit 1’s complement addition
Ex. Let X = A816 and Y = 8616.
Calculate Y - X using 1’s complement.
47. 8-bit 1’s complement addition
Ex. Let X = A816 and Y = 8616.
Calculate Y - X using 1’s complement.
Y = 1000 01102 = -12110
X = 1010 10002 = -8710
~X = 0101 01112
(Note: C=0 out of msb.)
1000 0110
0101 0111
1101 1101
Y - X = -121 + 87 = -34 (base 10)
48. 8-bit 1’s complement addition
Ex. Let X = A816 and Y = 8616.
Calculate X - Y using 1’s complement.
49. 8-bit 1’s complement addition
Ex. Let X = A816 and Y = 8616.
Calculate X - Y using 1’s complement.
X = 1010 10002 = -8710
Y = 1000 01102 = -12110
~Y = 0111 10012
(Note: C=1 out of msb.)
1010 1000
0111 1001
1 0010 0001
1
end around
carry
0010 0010
X - Y = -87 + 121 = 34 (base 10)