Number Systems and Logic Prepared by Dr P Marais (Modified by D Burford)

30
Number Systems and Logic Prepared by Dr P Marais (Modified by D Burford)

Transcript of Number Systems and Logic Prepared by Dr P Marais (Modified by D Burford)

Page 1: Number Systems and Logic Prepared by Dr P Marais (Modified by D Burford)

Number Systems and Logic

Prepared by

Dr P Marais

(Modified by D Burford)

Page 2: Number Systems and Logic Prepared by Dr P Marais (Modified by D Burford)

Counting….

0, 1, 2, 3, 4, 5, 6, 7, 8, 9, …

What comes next?

Why do we have ten digits?

Page 3: Number Systems and Logic Prepared by Dr P Marais (Modified by D Burford)

Number Representations

We are used to base/radix 10 (decimal)

0, 1, 2, 3, 4, 5, 6, 7, 8, 910, 11, 12, 13, 14, 15, 16, 17, 18, 1910, 20, 30, …, 100

10, …, 100, …, 1000, …, 10 000

Page 4: Number Systems and Logic Prepared by Dr P Marais (Modified by D Burford)

Decimal Example: 1041.20310 :

Represents:

Decimal

1*1000 + 0*100 + 4*10 + 1*1 + 2/10 + 0/100 + 3/1000

1 0 4 1 . 2 0 3

103 102 101 100 10-1 10-2 10-3

Page 5: Number Systems and Logic Prepared by Dr P Marais (Modified by D Burford)

Number Representations

General radix r number, Nr

Represents:

dp dp-1 … d2 d1 d0 . d–1 d–2 … d–q

rp rp-1 … r2 r1 r0 r-1 r-2 … r-q

dprp + dp-1rp-1+ …+ d2 r2 + d1r1 + d0 r0 + d–1r--1+ d–2r--2+…d–qr-q

Page 6: Number Systems and Logic Prepared by Dr P Marais (Modified by D Burford)

Binary

Computer uses presence/absence of voltage

Digits 0 and 1(off/on).

i.e. base 2

Bit = Binary digit

Page 7: Number Systems and Logic Prepared by Dr P Marais (Modified by D Burford)

Binary

Binary Example: 1001.1012 :

Represents:

1*8 + 0*4 + 0*2 + 1*1 + 1/2 + 0/4 + 1/8 = 9.62510

1 0 0 1 . 1 0 1

23 22 21 20 2-1 2-2 2-3

Page 8: Number Systems and Logic Prepared by Dr P Marais (Modified by D Burford)

Binary Integers (whole numbers) stored in n-bit words

n-bit binary number has range: 0 to (2n-1)

Largest 8-bit number:

= 1111 11112

= 1 0000 00002 - 12 = 28 - 1

= 25610 - 110

= 25510

Page 9: Number Systems and Logic Prepared by Dr P Marais (Modified by D Burford)

Binary to Decimal Conversion

1. quot = number; i = 0;2. repeat until quot = 0:

1. quot = quot/2;2. digit i = remainder; 3. i++;

gives digits from least to most significant bit

Example:

33/2 = 16 rem 1 (lsb)16/2 = 8 rem 0 8/2 = 4 rem 04/2 = 2 rem 02/2 = 1 rem 01/2 = 0 rem 1 (msb)

=> 3310 = 1000012

Page 10: Number Systems and Logic Prepared by Dr P Marais (Modified by D Burford)

Converting fractional numbers

Convert int and frac. parts separately

i = 0; repeat until N = 1.0 or i = n:

N = FracPart(N); N *= 2; digit i = IntPart(N); i++

Example:

0.8125*2 = 1.625 int = 1 (msb)0.625 *2 = 1.250 int = 10.25 *2 = 0.500 int = 00.5 *2 = 1.000 int = 1 (lsb)

=> 0.812510 = 0.11012

Caution: Many numbers cannot be represented accurately:

0.310 = 0.0[1001]...2 (bracket repeats, limited by bit size)

Page 11: Number Systems and Logic Prepared by Dr P Marais (Modified by D Burford)

Binary Addition

Adding binary numbers:

1 + 0 = 0 + 1 = 1 0 + 0 = 0 1 + 1 = 0 carry 1

Add 10910to 13610: 0 1 1 0 1 1 0 1 + 1 0 0 0 1 0 0 0 ____________

Page 12: Number Systems and Logic Prepared by Dr P Marais (Modified by D Burford)

Binary Addition

Adding binary numbers:

1 + 0 = 0 + 1 = 1; 0 + 0 = 0; 1 + 1 = 0 carry 1

Add 10910to 13610: 0 1 1 0 1 1 0 1 + 1 0 0 0 1 0 0 0 1 1 1 1 0 1 0 1

Check it!

Page 13: Number Systems and Logic Prepared by Dr P Marais (Modified by D Burford)

Binary Addition: Overflow

Possibility of overflow

Add 210 to 25410 :

1111 1110 + 0000 0010

[1] 0000 0000 = 25610

We only have 8 bits to store answer...so it's zero!

Page 14: Number Systems and Logic Prepared by Dr P Marais (Modified by D Burford)

Binary Addition: Overflow

Overflow: what happens?

Program can generate an “exception” to let us know

Usually many bits used (e.g. Intel word is 32-bits) so occurrence is reduced

Page 15: Number Systems and Logic Prepared by Dr P Marais (Modified by D Burford)

Signed Numbers

So far, only have positive numbers

What about negative numbers?

What about subtraction?

Page 16: Number Systems and Logic Prepared by Dr P Marais (Modified by D Burford)

Signed Numbers

Can use left-most bit to encode sign

0 -> pos, 1 -> neg

+510 0 00001012

-510 1 00001012

Page 17: Number Systems and Logic Prepared by Dr P Marais (Modified by D Burford)

Signed Numbers

For 8-bits, range is:

Problems:– Two zeros!!– Addition not straight forward – Must check sign-bit before adding (bad for hardware implementors)

This is non-sensical and wasteful: can use extra bit pattern

-(27-1) +(27-1)

1 11111112 0 11111112

-12710 +12710

Page 18: Number Systems and Logic Prepared by Dr P Marais (Modified by D Burford)

One’s Complement

Try “one's complement”:

– negative numbers obtained by flipping bits– positive numbers unchanged– Example:

+510 0000 01012

-510 1111 10102

Left-most bit still indicates sign

Page 19: Number Systems and Logic Prepared by Dr P Marais (Modified by D Burford)

Subtraction with One’s complement

Now easy to subtract: complement number and add: 5 - 6 = 0000 0101 + complement (0000 0110)

= 0000 0101 + 1111 1001 = 1111 1110

= complement (0000 0001) = (-1)

Page 20: Number Systems and Logic Prepared by Dr P Marais (Modified by D Burford)

Subtraction with One’s complement

Caution: If overflow,

– if numbers have different signs, carry is added into lsb

– if numbers have same sign, actual overflow has occured

Page 21: Number Systems and Logic Prepared by Dr P Marais (Modified by D Burford)

Subtraction with One’s complement

Evaluate 10–7 using 8-bit one’s complement arithmetic:

Page 22: Number Systems and Logic Prepared by Dr P Marais (Modified by D Burford)

Subtraction with One’s complement

Evaluate 10–7 using 8-bit one’s complement arithmetic:

10 - 7

= 0000 1010 + complement (0000 0111)

= 0000 1010

+ 1111 1000

= 0000 0010 carry 1

= 0000 0010 + 0000 0001 = 00000011 = 310

Page 23: Number Systems and Logic Prepared by Dr P Marais (Modified by D Burford)

Two’s Complement

Still have two zeros two’s complement

– Complement then add 1

– Our number range now asymmetric: -27 to 27-1

– Used extra zero bit pattern

Page 24: Number Systems and Logic Prepared by Dr P Marais (Modified by D Burford)

Two’s Complement

Now when we add, discard carry10 - 7 = 00001010 + 2complement (00000111)

= 00001010 + 11111001= 00000011 carry 1 (discard)

= 3

Same overflow test can be used (same/different signs)

Page 25: Number Systems and Logic Prepared by Dr P Marais (Modified by D Burford)

Octal and Hexadecimal

Base 8 (octal) and base 16 (Hexadecimal) are sometimes used (powers of 2)

Octal uses 8 digits (0-7)

Hex uses 16 “digits”:

0, 1, 2, 3, 4, 5, 6, 7 ,8, 9, A, B, C, D, E, F

Page 26: Number Systems and Logic Prepared by Dr P Marais (Modified by D Burford)

Octal and Hexadecimal

Each octal digit represents 3-bits Each hex digit represents 4-bits

Examples:

1310 = 11012

= (001)(101)2 = 158

= (1101)2 = D16

Page 27: Number Systems and Logic Prepared by Dr P Marais (Modified by D Burford)

Octal and Hexadecimal

Conversion from decimal as for bin: – divide/multiply by 8 or 16 instead– May be easier to convert to binary first

Binary to octal or hexadecimal – group bits into 3 (octal) or 4 (hex) from LS bit– pad with leading zeros if required

Page 28: Number Systems and Logic Prepared by Dr P Marais (Modified by D Burford)

Octal and Hexadecimal: Example

0100 0110 1101 01112

Page 29: Number Systems and Logic Prepared by Dr P Marais (Modified by D Burford)

Octal and Hexadecimal: Example

0100 0110 1101 01112

= (000) (100) (011) (011) (010) (111)

= 433278

= (0100) (0110) (1101) (0111)

= 46D716

Note padding at front of number

Page 30: Number Systems and Logic Prepared by Dr P Marais (Modified by D Burford)

Octal and Hexadecimal To convert from hex/octal to binary: reverse procedure

FF16 = (1111)(1111)2

3778 = (011)(111)(111)2

NOTE: for fractional conversion, move from left to right and pad at right end: 0.110011010112 = 0. (110) (011) (010) (110)

= 0.63268

0.112 = 0.(110)2 = 0.68

Convert fractional/integer part separately