binary arithmetic

50
Binary numbers and arithmetic

Upload: borntruce

Post on 08-Feb-2016

55 views

Category:

Documents


0 download

DESCRIPTION

Binary Arithmetic

TRANSCRIPT

Page 1: Binary Arithmetic

Binary numbers and arithmetic

Page 2: Binary Arithmetic

ADDITION

Page 3: Binary Arithmetic

Addition (decimal)

541

1914

5

10551

11561

1119921

11

Page 4: Binary Arithmetic

Addition (binary)

000

101

110

10

111

Page 5: Binary Arithmetic

Addition (binary)

1100001011

101101111

Page 6: Binary Arithmetic

Addition (binary)

So can we count in binary?

000

101

110

10

111

Page 7: Binary Arithmetic

Counting in binary (4 bits)0123456789101112131415

00000001…

Page 8: Binary Arithmetic

MULTIPLICATION

Page 9: Binary Arithmetic

Multiplication (decimal)

143130

131113

Page 10: Binary Arithmetic

Multiplication (binary)

100011111101000

11010110110111101

Page 11: Binary Arithmetic

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.

Page 12: Binary Arithmetic

REPRESENTING SIGNED (POSITIVE AND NEGATIVE) NUMBERS

Page 13: Binary Arithmetic

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

Page 14: Binary Arithmetic

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].

Page 15: Binary Arithmetic

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

Page 16: Binary Arithmetic

Signed magnitude

• Ex. 4-bit signed magnitude– 1 bit for sign– 3 bits for magnitude

111101117111001106110101015110001004101100113101000102100100011100000000NN

Page 17: Binary Arithmetic

Signed magnitude

• Ex. 4-bit signed magnitude– 1 bit for sign– 3 bits for magnitude

111101117111001106110101015110001004101100113101000102100100011100000000NN

Page 18: Binary Arithmetic

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.

Page 19: Binary Arithmetic

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

Page 20: Binary Arithmetic

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

Page 21: Binary Arithmetic

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.

Page 22: Binary Arithmetic

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

Page 23: Binary Arithmetic

2’s complement(radix complement)

• Shortcut for base 2?– Yes! Flip the bits and add 1.

100101117101001106101101015110001004110100113111000102111100011000000000NN

Page 24: Binary Arithmetic

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

Page 25: Binary Arithmetic

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.

Page 26: Binary Arithmetic

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

Page 27: Binary Arithmetic

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

Page 28: Binary Arithmetic

Summary of methods for representing signed ints.

11110001100110001111011171110001010101001111001106110100111011101011010101511000100110010111100010041011010111011100101100113101001101110110110100010210010111111111101001000111000100000001111100000000

821nnnnnnN

excesssCompsCompsignedMag

1000=-8| 0000 unused

Page 29: Binary Arithmetic

BINARY ARITHMETIC

Signed magnitude1’s complement2’s complementExcess K (biased)

Page 30: Binary Arithmetic

BINARY ARITHMETICSigned magnitude

Page 31: Binary Arithmetic

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?

Page 32: Binary Arithmetic

BINARY ARITHMETIC2’s complement

Page 33: Binary Arithmetic

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?

Page 34: Binary Arithmetic

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

Page 35: Binary Arithmetic

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

Page 36: Binary Arithmetic

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

Page 37: Binary Arithmetic

So how can we perform subtraction?

Page 38: Binary Arithmetic

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

Page 39: Binary Arithmetic

Carry vs. overflow

Page 40: Binary Arithmetic

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.

Page 41: Binary Arithmetic

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?

Page 42: Binary Arithmetic

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

Page 43: Binary Arithmetic

BINARY ARITHMETIC1’s complement

Page 44: Binary Arithmetic

Addition with 1’s complement

• Note: 1’s complement has two 0’s!

• 1’s complement addition is tricky (end-around-carry).

100001117100101106101001015101101004110000113110100102111000011111100000NN

Page 45: Binary Arithmetic

8-bit 1’s complement addition

• Ex. Let X = A816 and Y = 8616.• Calculate Y - X using 1’s complement.

Page 46: Binary Arithmetic

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)

Page 47: Binary Arithmetic

8-bit 1’s complement addition

• Ex. Let X = A816 and Y = 8616.• Calculate X - Y using 1’s complement.

Page 48: Binary Arithmetic

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

Page 49: Binary Arithmetic

BINARY ARITHMETICExcess K (biased)

Page 50: Binary Arithmetic

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.)