Binary numbers and arithmetic
Binary numbers and arithmetic
ADDITION
Addition (decimal)
541
1914
5
10551
11561
1119921
11
Addition (binary)
000
101
110
10
111
Addition (binary)
1100001011
101101111
Addition (binary)
So can we count in binary?
000
101
110
10
111
Counting in binary (4 bits)0123456789101112131415
00000001…
MULTIPLICATION
Multiplication (decimal)
143130
131113
Multiplication (binary)
100011111101000
11010110110111101
Multiplication (binary)
100011111101000
11010110110111101
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.
REPRESENTING SIGNED (POSITIVE AND NEGATIVE) NUMBERS
Representing numbers (ints)
• Fixed, finite number of bits.
bits bytes C/C++ Intel Sun8 1 char [s]byte byte16 2 short [s]word half32 4 int or long [s]dword word64 8 long long [s]qword xword
Representing numbers (ints)
• Fixed, finite number of bits.
bits Intel signed unsigned8 [s]byte -27..+27-1 0..+28-116 [s]word -215..+215-1 0..+216-132 [s]dword -231..+231-1 0..+232-164 [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].
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
Signed magnitude
• Ex. 4-bit signed magnitude– 1 bit for sign– 3 bits for magnitude
111101117111001106110101015110001004101100113101000102100100011100000000NN
Signed magnitude
• Ex. 4-bit signed magnitude– 1 bit for sign– 3 bits for magnitude
111101117111001106110101015110001004101100113101000102100100011100000000NN
1’s complement(diminished radix complement)
• Let x be a non-negative number.• Then –x is represented by bD-1+(-x) where
b = baseD = (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.
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
1’s complement(diminished radix complement)
• Let x be a non-negative number.• Then –x is represented by bD-1+(-
x) whereb = baseD = (total) # of bits (including the sign
bit)• Shortcut for base 2?
– All combinations used, but 2 zeros!
100001117100101106101001015101101004110000113110100102111000011111100000NN
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.
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?
100101117101001106101101015110001004110100113111000102111100011000000000NN
2’s complement(radix complement)
• Shortcut for base 2?– Yes! Flip the bits and add 1.
100101117101001106101101015110001004110100113111000102111100011000000000NN
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?
100101117101001106101101015110001004110100113111000102111100011000000000NN
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.
excess bD-1
• For pos, neg, and 0, x is represented bybD-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.
000111117001011106001111015010011004010110113011010102011110011100010000NN
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.
000111117001011106001111015010011004010110113011010102011110011100010000NN
Summary of methods for representing signed ints.
11110001100110001111011171110001010101001111001106110100111011101011010101511000100110010111100010041011010111011100101100113101001101110110110100010210010111111111101001000111000100000001111100000000
821nnnnnnN
excesssCompsCompsignedMag
1000=-8| 0000 unused
BINARY ARITHMETIC
Signed magnitude1’s complement2’s complementExcess K (biased)
BINARY ARITHMETICSigned magnitude
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?
BINARY ARITHMETIC2’s complement
Representing numbers (ints) using 2’s complement
• Fixed, finite number of bits.
bits Intel signed8 sbyte -27..+27-116 sword -215..+215-132 sdword -231..+231-164 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?
Representing numbers (ints)• Fixed, finite number of bits.
bits Intel signed8 sbyte -27..+27-116 sword -215..+215-132 sdword -231..+231-164 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?
10008100101117101001106101101015110001004110100113111000102111100011000000000nn
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
1000101011101000
10000100111
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
00100010 101111010
100001011111
So how can we perform subtraction?
Addition of 2’s complement binary numbers
• Consider 8-bit 2’s complement binary numbers.
• Subtraction is nothing but addition of the 2’s complement.– Ex. 58 – 40 = 58 + (-40) = 18
00010010 111011000
101011001111
discard carry
Carry vs. overflow
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.
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?
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?
What is 111111102?
Flip the bits: 00000001.Then add 1: 00000010.This is -2.
111111100111111101111111
BINARY ARITHMETIC1’s complement
Addition with 1’s complement
• Note: 1’s complement has two 0’s!
• 1’s complement addition is tricky (end-around-carry).
100001117100101106101001015101101004110000113110100102111000011111100000NN
8-bit 1’s complement addition
• Ex. Let X = A816 and Y = 8616.• Calculate Y - X using 1’s complement.
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.)
1101 11010111 01010110 1000
Y - X = -121 + 87 = -34 (base 10)
8-bit 1’s complement addition
• Ex. Let X = A816 and Y = 8616.• Calculate X - Y using 1’s complement.
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.) 0010 00101
0001 0010 11001 01111000 1010
X - Y = -87 + 121 = 34 (base 10)
end around carry
BINARY ARITHMETICExcess K (biased)
Binary arithmetic and Excess K (biased)
Method: Simply add and then flip the sign bit.-1 0111+5 1101-- ----+4 0100 -> flip sign -> 1100
+1 1001-5 0011-- -----4 1100 -> flip sign -> 0100
+1 1001 +5 1101 -- ---- +6 0110 -> flip sign -> 1110
-1 0111 -5 0011 -- ---- -6 1010 -> toggle sign -> 0010 000111117
001011106001111015010011004010110113011010102011110011100010000NN
(Not used for integer arithmetic but employed in IEEE 754 floating point standard.)