Topic 1 – Number Systems. What is a Number System? A number system consists of an ordered set of...

Preview:

Citation preview

Topic 1 – Number Systems

What is a Number System? A number system consists of an ordered

set of symbols (digits) with relations defined for addition, subtract, multiplication, and division.

The radix of a number system is the total number of digits allowed in the system.

Any number in a system can have both an integer (whole) part and a fractional part, separated with a radix point.

Positional Notation As an example, consider a fictional

paycheck of $956.81. This number is expressed in positional

notation. This means that the position of each digit indicates its relative weight (or significance).

Here, this paycheck can be cashed for 9 hundred dollar bills, 5 ten dollars bills, 6 one dollar bills, 8 dimes, and 1 penny.

Positional Notation A positive number, N, can be written in

positional notation as:N = (an-1an-2…a1a0a-1..a-2…a-m)r

Here, n represents the number of digits to the left of the radix point, m represents the number of digits to the right of the radix point, and r represents the radix.

Using this notation, our paycheck can be expressed as (956.81)10. In general, we can emit the ()r if the radix is known by context.

Polynomial Notation We can also express this amount in

polynomial notation. For example, we can express our value

of 956.81 as9 x 102 + 5 x 101 + 6 x 100 + 8 x 10-1 + 1 x 10-2

Note that each digit resides in a weighted position and that weight is a power of the radix (10 in this case).

Important Number Systems In the study of digital systems we

have a number of important number systems… Binary - Radix 2 Octal - Radix 8 Decimal - Radix 10 Hexadecimal - Radix 16

Important Number Systems

0 0 0 0

1 1 1 1

2 10 2 2

3 11 3 3

4 100 4 4

5 101 5 5

6 110 6 6

7 111 7 7

8 1000 10 8

9 1001 11 9

10 1010 12 A

11 1011 13 B

12 1100 14 C

13 1101 15 D

14 1110 16 E

15 1111 17 F

16 10000 20 10

Decimal Binary Octal Hexadecimal

Binary in Digital Systems Digital systems are usually constructed in

a two state device (it’s either on or off). This makes the binary number system ideally suited for representing numbers in digital systems.

Only two digits, 0 and 1 (called bits) are needed. A bit can be stored in a two stage storage device known as a latch.

A binary number of length n can be stored in an n-bit long device known as a register, which is built with n latches.

Binary Addition Binary addition is very simple. This is best shown in an example

of adding two binary numbers…

1 1 1 1 0 1+ 1 0 1 1 1---------------------

0

1

0

1

1

1111

1 1 00

carries

Binary Addition We can add four binary numbers:

(101101)2, (110101)2, (001101)2, and (010001)2…

10 10 10 10 1 10 1 0 1 1 0 1

1 1 0 1 0 1 0 0 1 1 0 1+ 0 1 0 0 0 1----------------------1 0 0 0 0 0 0 0

carries

Binary Subtraction We can also perform subtraction (with

borrows in place of carries). Let’s subtract (10110)2 from (1001101)2…

1 100 10 10 0 0 10

1 0 0 1 1 0 1- 1 0 1 1 1------------------------ 1 1 0 1 1 0

borrows

Binary Multiplication Binary multiplication is much the

same as decimal multiplication, except that the multiplication operations are much simpler…1 0 1 1 1

X 1 0 1 0----------------------- 0 0 0 0 0 1 0 1 1 1 0 0 0 0 0 1 0 1 1 1----------------------- 1 1 1 0 0 1 1 0

Binary Division Binary division is the same trial and

error procedure as decimal division…

1 1 0 1 -------------------------1 0 0 1 / 1 1 1 0 1 1 1 1 0 0 1 ---------- 1 0 1 1 1 0 0 1 ---------- 1 0 1 1 1 0 0 1 ---------- 1 0

remainder

quotient

Hexadecimal Arithmetic Arithmetic in hexadecimal follows the

same procedures…

Adding (2A58)16 + (71D0)16

12 A 5 8

+ 7 1 D 0--------------- 9 C 2 8

carries

Hexadecimal Arithmetic

Subtracting (9F1B)16 - (4A36)16

E 119 F 1 B

- 4 A 3 6--------------- 5 4 E 5

borrows

Hexadecimal Arithmetic

Multiplying (5C2A)16 X (71D0)16

5 C 2 AX 7 1 D 0---------------------- 4 A E 2 2 0 5 C 2 A2 8 5 2 6----------------------2 8 F 9 6 C 2 0

Hexadecimal Arithmetic Dividing (27FCA)16 / (3E)16

A 5 1 -------------------------3 E / 2 7 F C A 2 6 C ------- 1 3 C 1 3 6 ------- 6 A 3 E ---- 2 C

quotient

remainder

Base Conversions Often, you will need to convert numbers

from one base into another. The easiest and most direct way to do

this is series substitution. To convert a number from base A to

base B, first form the series representation of the number in base A and the evaluate the series using base B arithmetic.

Series Substitutions For example, to convert (10100)2 to

base 10…N = 1(24)+0(23)+1(22)+0(21)+0(20)

N = (16)10 + 0 + (4)10 + 0 + 0

N = (20)10

And, to convert (1101.011)2 to base 8…

N = 1(23)+1(22)+0(21)+1(20)+0(2-1)+1(2-2)+1(2-3)

N = (10)8 + (4)8 + 0 + (1)8 + 0 + (.2)8 + (.1)8

N = (5.3)8

Series Substitution To convert (AF3.15)16 to base 10…

N=A(162) + F(161) + 3(160) + 1(16-1) + 5(16-2)

N=1010(25610) + 1510(1610) + 310(110)

+ 110(0.062510) + 510(0.0039062510)

N=256010 + 24010 + 310 + 0.062510

+ 0.0195312510

N = (2803.08203125)10

Radix Divide Method An alternate method of converting from

base A to base B is the radix divide method. (1) Divide (N)A by the desired base B, producing

quotient Q1 and remainder R0. R0 is the least significant digit (d0) of the result.

(2) Compute each remaining digit by dividing the quotient Qi by (B)A, producing Qi+1 and remainder Ri, which represents di.

(3) Stop when the quotient Qi+1 = 0.

This is best seen with some examples…

Radix Divide Method Converting (234)10 to base 8…

2 9 -------8 / 2 3 4 1 6 ----- 7 4 7 2 --- 2b0

3 -----8 / 2 9 2 4 --- 5

b1

0 ---8 / 3 0 - 3

b2

Therefore,(234)10 = (352)8

Radix Divide Method Converting (234)10 to base 16…

1 4 -------16 / 2 3 4 1 6 ----- 7 4 6 4 --- 1 0

(10)10 = (A)16 = b0

0 -----16 / 1 4 0 --- 1 4

(14)10 = (E)16 = b1

Therefore,(234)10 = (EA)16

Radix Multiplication Method In order to convert fractional numbers from

base A to base B, we can use the radix multiplication method. (1) Let F-1 = (N)A. (2) Compute digits (b-i)A by multiplying Fi by (B)A,

producing integer I-i which represents digit (b-i)A and fraction F-(i+1).

(3) Convert each digit (b-i)A to base B.

Again, this is best seen with some examples…

Radix Multiplication Method Converting (0.828125)10 to base 2…

0.828125X 2--------1.656250

b-1

0.250000X 2--------0.500000

b-5

0.500000X 2--------1.000000

b-6

0.625000X 2--------1.250000

b-4

0.656250X 2--------1.312500

b-2

0.312500X 2--------0.625000

b-3

Therefore,(0.828125)10 = (0.110101)2

Radix Multiplication Method Converting (0.1285)10 to base 8…0.1285X 8------1.0280

b-1

0.0280X 8------0.2240

b-2

0.2240X 8------1.7920

b-3

0.7920X 8------6.3360

b-4

0.3360X 8------2.6880

b-5

0.6880X 8------5.5040

b-6

0.5040X 8------4.0320

b-7

0.0320X 8------0.2560

b-8

Therefore,(0.1285)10 = (0.10162540…)8

General Conversion Algorithms There are two general conversion

algorithms. Algorithm 1:To convert N from base A to base B, use:

(a) the series substitution method with base B arithmetic, or(b) the radix divide and/or multiply methods with base A arithmetic.

General Conversion Algorithms

Algorithm 2:To convert N from base A to base B, use:

(a) the series substitution method with base 10 arithmetic to convert N from base A to base 10, and then(b) the radix divide and/or multiply methods with base 10 arithmetic to convert N from base 10 to base B.

General Conversion Algorithms Algorithm 1 is more direct, as we simply

go from base A to base B. Algorithm 2 goes from base A to base 10

to base B. So, algorithm 2 requires more steps than

algorithm 1. However, it is often easier, faster, and less error prone, as all arithmetic is performed in decimal (base 10).

Bottom line … do what is easier for you.

Signed Number Representation The easiest and most straightforward

method of representing signed numbers is the sign magnitude code.

A signed number may be written as…N = (san-1an-2…a1a0a-1…a-m)rsm

where s = 0 if the number N is positive and s = (r-1) if the number N is negative (where r is the radix of the number system used to represent the number N).

Sign Magnitude Representation Therefore, the sign magnitude code of

N=(-13)10 in decimal is…

N = (9, 13)10sm

And the sign magnitude code of N = (-13)10 in binary is…

N = -(13)10

= -(1101)2

= (1, 1101)2sm

The comma is used to delimit sign digits for the sake of clarity.

Sign Magnitude andDigital Systems Sign magnitude code is typically not used

in digital systems. This method requires circuitry and

algorithms that require the system to understand and process the sign magnitude coded numbers…a process which is both time consuming and requires complex circuitry.

A much more powerful code number systems can be used in digital systems.

Complementary Number Systems Complementary numbers form the basis

of complementary arithmetic which is a powerful method used by digital systems to handle signed number manipulation.

In these systems, positive numbers are represented the same as in sign-magnitude representation; negative numbers are represented as the complement of the corresponding positive number.

Radix Complements The radix complement [N]r of a

number (N)r is defined as:

[N]r = rn – (N)r

where n is the number of digits in (N)r.

The largest positive number (positive full scale) that can be represented in such a scale of rn-1-1 while the most negative number (negative full scale) is –rn-1.

Two’s Complement Numbers The two’s complement number

system is the most commonly used system for digital systems.

The two’s complement of a number (N)2 is defined as

[N]2 = 2n – (N)2

Calculating the 2’s Complement of a Number To calculate the two’s complement of

(N)2 = (01100101)2…

[N]2 = [01100101]2

= 28 – (01100101)2

= (100000000)2 – (01100101)2

= (10011011)2

2’s Complement &Negative Numbers Therefore, (10011011)2 is the 2’s complement

of (01100101)2. We can show that this can be used to represent –(N)2 by showing that (N)2+[N]2 = 0…

1 0 0 1 1 0 1 1+ 0 1 1 0 0 1 0 1-------------------1 0 0 0 0 0 0 0 0 If we discard the carry, we can see that the 2’s

complement of a binary number can be used to represent its negative counterpart.

Complement of the Complement We can also take the 2’s complement of

the 2’s complement of a number and get the original number back…[[N]2]2 = [00101100]2

= 28 – (00101100)2

= (100000000)2 – (00101100)2

= (11010100)2.

Since this is the original (N)2, we can see that [[N]2]2 = (N)2.

Complement Shortcuts There also are shortcuts to computing

the 2’s complement of a binary number…

Algorithm 1 – Starting with the least significant bit, copy all of the bits up to and including the first 1 bit and then complementing the remaining bits. N = 0 1 1 0 0 1 0 1

[N] = 1 0 0 1 1 0 1 1

Complement Shortcuts N = 1 1 0 1 0 1 0 0

[N] = 0 0 1 0 1 1 0 0

For N = (10110)2 for n = 8 (each number represented in 8 bits)…N = 0 0 0 1 0 1 1 0[N] = 1 1 1 0 1 0 1 0

Complement Shortcuts Algorithm 2 – Simply complement

each bit and then add 1 to the result.

Finding the 2’s complement of (01100101)2 and of its 2’s complement…N= 01100101 N = 10011011

10011010 01100100 + 1 + 1

--------------- --------------- 10011011 01100101

2’s Complement Numbers To summarize 2’s complement

numbers: The two’s complement is computed

using the expression [N]2 = 2n – (N)2.

The two’s complement of a binary number is equivalent to the inverse of that number...-(N)2 = [N]2.

There are multiple ways of calculating [N]2, with the simplest being to complement each bit of (N)2 and then add one to the result.

Complementary Arithmetic As subtracting two numbers is equivalent

to adding the complement of one number to the other number, digital systems need only adder circuitry to perform both addition and subtraction.

As any digital system has a limited number of resources (and the circuits must be a fixed size), machines have fundamental limits as to the range of numbers they can represent.

Finite Number Representation Machines that use 2’s complement

arithmetic can represent integers in the range

-2n-1 <= N <= 2n-1-1where n is the number of bits available for representing N. Note that 2n-1-1 = (011..11)2cns and –2n-1 = (100..00)2cns.

Adders Circuitry that performs addition (usually

using 2’s complement numbers) is known as an adder.

Adders have a set number of bits of precision. For instance, an adder that handles n bit numbers is referred to as a n-bit adder.

Adders will produce a carry bit when their computed sum is greater than what the adder can represent in n bits. An n-bit adder will produce a carry bit for any sum A >= 2n.

Overflows When an operation (such as addition)

produces a result that falls outside this range, an overflow condition is said to occur.

In such a case, the n-bit number produced by the operation will not be a valid representation of the result.

Generally, digital systems monitor the operations they perform and generate a warning signal when overflow occurs, so invalid numbers are not mistaken for correct and valid results.

Complementary Arithmetic In order to see how arithmetic in

the 2’s complement system works, let’s look at three cases. In each of these cases, we will assume that B >= 0 and C >= 0. A = B + C A = B – C A = – B – C

Case 1: A = B + C In the first case, A = B + C, we know that

since B and C are nonnegative, A must also be nonnegative.

The difficulty that arises here is when A>2n-1-1, as this is when an overflow occurs.

This is easily detected as the sign bit of A will be incorrect.

To see this, let’s consider the sum of the two largest possible n-bit positive numbers…

Case 1: A = B + C The largest possible n-bit number is 2n-1-1. If we add this number to itself,

(2n-1-1) + (2n-1-1) = 2n - 2 As this is greater than 2n-1-1, an overflow

condition occurs for any sum, A, in the range A >= 2n-1.

The nth bit of any number in this range will be set to 1. Therefore, any such result will appear to be negative, thus indicating the overflow condition.

Case 1 Summary To summarize A = B + C…

When A > 2n-1-1, an overflow is indicated by the sign bit of A being incorrect. If two positive numbers are added and the result is negative, overflow has occurred.

Since the maximum possible A = 2n-2, there will never be a carry bit out of the nth bit of the binary adder.

Case 1 Example #1 For case 1, let’s compute (9)10 + (5)10

using 5-bit 2’s complement arithmetic.

Since the result has a zero sign bit, it correctly represents the desired sum. Indeed, (01110)2cns = +(1110)2 = +(14)10.

0 1 0 0 1 (2cns code for (9)10)+ 0 0 1 0 1 (2cns code for (5)10)--------------

0 1 1 1 0

Case 1 Example #2 Now, let’s compute (12)10 + (7)10 using

5-bit 2’s complement arithmetic.

This result has a 1 sign bit, indicating a negative number! Thus, overflow has occurred and the result is invalid. Indeed, the correct result, (19)10 is outside the 5-bit 2’s complement range.

0 1 1 0 0 (2cns code for (12)10)+ 0 0 1 1 1 (2cns code for (7)10)--------------

1 0 0 1 1

Case 2: A = B – C In this case, the computation is

treated as A = B + (-C). As we’re using 2’s complement coding, we can write (-C) as [C]…

A = (B)2 + [C]2

= (B)2 + 2n – (C)2

= 2n + (B)2 – (C)2

Case 2: A = B – C So, we can see that A = 2n+(B)2–(C)2. This seems right, except for the extra 2n

term. To understand this, let’s consider when B >= C. In this case, B-C >- 0. Therefore A >= 2n. Since A >= 2n, this is a carry bit (recall that an adder generates a carry bit for any sum >= 2n).

This carry bit can be ignored and we arrive at the result A = B – C, which is what we want.

Case 2: A = B – C To be complete, let’s also consider when B

< C. In this case, B-C < 0 and A = 2n – (C – B)2 = [C – B]2. This gives A = -(C-B)2, which is the correct answer.

Note that here there is no carry bit generated by the adder (as there is no 2n term).

When B and C are both positive numbers, B-C will always be less than either of the two numbers, meaning no overflow cannot be generated in this condition.

Case 2 Example #1 Let’s compute (12)10 – (5)10.

(12)10 = +(1100)2 = (01100)2cns

(-5)10 = -(0101)2 = (11011)2cns

Adding these two 5-bit codes…

Discarding the carry bit, the sign bit is seen to be zero, indicating a correct result. Indeed, (00111)2cns = +(0111)2 = +(7)10.

0 1 1 0 0 + 1 1 0 1 1-------------- 1 0 0 1 1 1

carry

Case 2 Example #2 Let’s compute (5)10 – (12)10.

(-12)10 = -(1100)2 = (10100)2cns

(5)10 = +(0101)2 = (00101)2cns

Adding these two 5-bit codes…

Here, there is no carry bit and the sign bit is 1. This indicates a negative result, which is what we expect. (11001)2cns = -(7)10.

0 0 1 0 1 + 1 0 1 0 0-------------- 1 1 0 0 1

Case 3: A = –B – C Here, we will take the complements of B and

C and add them together to compute A. Therefore…

If the carry bit is discarded, the computation produces the correct result, the 2’s complement representation of –(B+C)2.

A = [B]2 + [C]2

= 2n – (B)2 + 2n – (C)2

= 2n + 2n – (B+C)2

= 2n + [B + C]2

Case 3 Example #1 Let’s compute –(9)10 – (5)10…

-(9)10 = -(1001)2 = (10111)2cns

-(5)10 = -(0101)2 = (11011)2cns

Adding these codes…

If we ignore the carry bit, we can see the sign bit is 1. Therefore, the result is correct. Indeed, (10010)2cns = -(1110)2 = -(14)10.

1 0 1 1 1 + 1 1 0 1 1-------------- 1 1 0 0 1 0

carry

Negative Number Overflow Just as too large of a positive

number can produce an overflow, so can too small of a negative number. Any result in the range A < -2n-1 will cause an overflow, indicated by an incorrect sign bit (it appears to be positive).

This can be illustrated…

Case 3 Example #2 Let’s compute –(12)10 – (5)10…

-(9)10 = -(1100)2 = (10100)2cns

-(5)10 = -(0101)2 = (11011)2cns

Adding these codes…

If we ignore the carry bit, we can see the sign bit is 0. This indicates an overflow and the result is invalid.

1 0 1 0 0 + 1 1 0 1 1-------------- 1 0 1 1 1 1

carry

2’s Complement Summary

Case Carry

Sign Bit

Condition Over flow?

B + C 0 0 B+C <= 2n-1-1 no

0 1 B+C > 2n-1-1 yes

B – C 1 0 B <= C no

0 1 B > C no

- B – C 1 1 -(B+C) >= -2n-1 no

1 0 -(B+C) < -2n-1 yes

Diminished Radix Complement Number Systems In addition to the radix

complement number systems (such as 2’s complement), there is a class of number systems known as the diminished radix complement systems.

This is defined as…[N]r-1 = rn - (N)r -1

1’s Complement For binary numbers, the 1’s

complement system is used. To find the 1’s complement of a n-bit binary number…

[N]2-1 = 2n – (N)2 – 1 As a shortcut algorithm, simply

complement each bit of (N)2.

1’s Complement Arithmetic Using 1’s complement numbers,

subtracting a number is not the same as adding its inverse (or subtracting it).

For example, suppose we wish to add +(1001)2 and –(0100)2. We compute the 1’s complement of (0100)2 and obtain 11011. We add 01001 and 11011 and obtain 100100. This is not the correct result.

End-Around Carry The correct result, in this system, is

obtained by adding the carry out of the most significant bit to the result.

In this case, we take the result 00100 and add the carry out bit of 1 and obtain the result of 00101. This is the correct result.

This procedure is referred to as an end-around carry and is a necessary step in diminished complement arithmetic.

Diminished Radix Complement Number Systems Diminished radix complement number

systems (especially the 1’s complement) are not used very often. There are significant advantages to the complementary number systems.

However, the 1’s complement system comes up sometimes in the study of digital systems, so it is a good idea to understand how this system of number representation works.

Summary You should now know:

Decimal, binary, octal, and hexadecimal number systems

Conversion between these bases Arithmetic operations in these bases How negative numbers can be

represented in computers, which method is most commonly used, and why

Recommended