Number

Systems

Positional number systems

Whole numbers

Fractions

Accuracy

Copyright  1993-95, Thomas P. Sturm

Concept of a Positional Number System

What does 4,752 (base 10) represent (in base 10)?

4 x 100040004 x 103

+7 x 1007007 x 102

+5 x 10505 x 101

+2 x 122 x 100

So what does 1011 (base 2) represent (in base 10)?

1 x 881 x 23

0 x 400 x 22

1 x 221 x 21

1 x 111 x 20

While this makes a nice definition, it is far too much work for "practical" use - binary numbers get to be long

Counting Revisited

DecimalBinaryOctalHexadecimal

0000

1111

21022

31133

410044

510155

611066

711177

81000108

91001119

10101012A

11101113B

12110014C

13110115D

14111016E

15111117F

16100002010

17100012111

18100102212

19100112313

20101002414

21101012515

22101102616

23101112717

24110003018

25110013119

2611010321A

2711011331B

2811100341C

2911101351D

3011110361E

3111111371F

321000004020

Faster Conversion of Binary to Decimal

Dibble-Dabble, Horner's Method, Algorithm 1.1

1. Start at the left, start with 0

2. Add in leading digit

3. If there's another digit, multiply total by 2, add in next digit, repeat this step until you reach the radix (binary) point.

Ex:11010 (binary) converted to base 10 is:

0

+ 1

1

x 2

2

+ 1

3

x 2

6

+ 0

6

x 2

12

+ 1

13

x 2

26

+ 0

26

Even Faster in Your Head

Ex:11010010110 (binary) converted to base 10 is:

(in your head 1,3,6,13,26,52,105,210,421,843,1686)

Which has just got to be a lot quicker than

1024

+ 512

+ 128

+ 16

+ 4

+ 2

(not even counting the time it takes to generate the powers of 2)

Fast Decimal to Binary Conversion

(Dibble-Dabble, Horner's Method, Algorithm 1.2)

Since all even numbers end in 0 (binary), and all odd numbers end in 1 (binary), and since division by 2 yields a 0 remainder for even numbers and a 1 remainder for odd numbers, the remainder after division by 2 gives you the LSB (least significant bit) of the corresponding binary number.

Just repeat this process until you get a 0 quotient

Ex: Convert 75 (decimal) to binary

2 | 75

2 | 37+1

2 | 18+1

2 | 9+0

2 | 4+1

2 | 2+0

2 | 1+0

0+1

Now, the trick to remember, the LSB is ON TOP, so read the answer from the bottom up:

75 (decimal) = 1001011 (binary)

Converting Other Bases

Ex: Convert 17 (base 9) to base 6.

Solution: First convert 17 (base 9) to base 10, using the first fast conversion algorithm:

1

x9

9

+7

16

Next, convert 16 (base 10) to base 6, using the second fast conversion algorithm:

6 | 16

6 | 2+4

0+2

Reading up, 17 (base 9) equals 24 (base 6), which both equal 16 (base 10)

Base 8 has a Special Relationship to Base 2

Conversion between octal and binary is particularly fast and trivial, if you are careful. Since 23 = 8, every 3 binary digits converts to 1 octal digit, but you have to start in the correct place - the radix point

The conversion is

0000

0011

0102

0113

1004

1015

1106

1117

Ex. Convert 10110011001111101000 to octal

Solution: starting at the RIGHT, block off into groups of 3

10|110|011|001|111|101|000

Now convert group-by-group to

2631750 (octal)

Conversion from octal to binary is even easier.

Ex. Convert 307125 to binary

Solution: 011|000|111|001|010|101, or, removing the dividing bars and the (useless for now) preceding 0, 11000111001010101

Hexadecimal to Binary

Hex to binary is just as quick and trivial, except, since 16 = 24, the binary numbers are grouped by 4's, and a longer conversion table needs to be "remembered"

Binary / Hexadecimal
0000 / 0
0001 / 1
0010 / 2
0011 / 3
0100 / 4
0101 / 5
0110 / 6
0111 / 7
1000 / 8
1001 / 9
1010 / A
1011 / B
1100 / C
1101 / D
1110 / E
1111 / F

Ex: Convert 1011010100001110101101010110011 to hex

Solution: 101|1010|1000|0111|0101|1010|1011|0011 converts to 5A875AB3 (hex)

Ex: Convert ACD01BF to binary

Solution: 1010110011010000000110111111

Binary Numbers in Real Machines

Real computers have a fixed length space for the storage of positive whole numbers in binary.

First question: How do we store numbers that are "too short to fit"?

Solution: Add preceding zeroes.

Ex: Show how 5 will be represented in 8 bits

Solution: 101 is only 3 bits long, so add 5 preceding zeroes to obtain 00000101

Ex: Show how 5 will be represented in 32 bits

Solution: 00000000000000000000000000000101

Second question: What is the largest number you can store this way in a fixed number of bits?

Solution: In binary it is all 1's, which is 1 less than 2 to the power of the number of bits!

Ex: What's the largest number that can be stored in 8 bits

Solution: 11111111 = 100000000 - 1 = 255

Third question: How many different numbers can be stored in a fixed number of bits?

Solution: 2 to the number of bits (all the combinations)

Ex: How many values can be stored in 8 bits

Solution: 256

Estimating Large Powers of 2

Most real computers frequently deal with larger collections of bits than 8. The VAX routinely handles 32 bits at a time (it prefers it to anything shorter), and can handle collections of 64, 128, and, on rare occasion, numbers than occupy 256 bits in length. How many combinations of these numbers are there?

Repeatedly multiplying by 2 to get the answer will take a long time - and is a waste of time.

Note: 210 = 1024 = 1K  1,000

Note: 220 = 210 x 210 = 1024 x 1024 = 1 Meg  1,000,000

Note: 230 = 210 x 210 x 210 = 1 Gig  1,000,000,000

250 would have 5 commas

2120 would have 12 commas

Now, all you need to do is get the LEADING DIGITS of the answer by looking at the power of two of the TRAILING DIGIT of the exponent

Ex: Estimate 236

Solution: 64,000,000,000

Ex: Estimate 245

Solution: 32,000,000,000,000

Ex: Estimate 2123

Solution: 8,000,000,000,000,000,000,000,000,000,000,000,000

Positional Number System for Values Less than 1

What does .475 (base 10) represent (in base 10)?

4 x 10-14 x .1.4

7 x 10-27 x .01.07

5 x 10-35 x .001.005

So what does .1101 (base 2) represent (in base 10)?

1 x 2-11 x .5.5

1 x 2-21 x .25.25

0 x 2-30 x .125.0

1 x 2-41 x .0625.0625

This is a totally unreasonable way of doing this conversion - and there is a way just as fast for fractionals as there is for whole numbers

Faster Conversion of Binary Fractions to Decimal

(Dibble-Dabble, Horner's Method, Extension of Algorithms 1.1 and 1.2)

1. Start at the right, start with 0

2. Add in the digit

3. Divide by 2

4. If there are more digits to the left, (but to the right of the binary point), go back to step 2

Ex: .1101 (binary) converted to base 10 is:

0

+ 1

2| 1

0.5

+ 0

2| 0.5

0.25

+ 1

2| 1.25

0.625

+ 1

2| 1.625

0.8125

Fast Decimal Fraction to Binary Conversion

(Horner's Method, Dibble-Dabble, Extension of Algorithms 1.1 and 1.2)

Use the "inverse" of the method used for integers

Note:

- if a number is between 1/2 and 1, then the first binary digit after the binary point is a 1

- otherwise , if the number is less than 1/2, the first binary digit is a 0.

Note:

- if we multiply the decimal number by 2, the whole number we get is the first binary digit after the binary point.]

Ex: Convert .40625 (decimal) to binary

.40625

x2

0.8125

x2

1.625

x2

1.25

x2

0.5

x2

1.0

Now, the trick to remember is that the MSB is ON TOP, so read the answer from the top down:

.40625(decimal) = .01101 (binary)

Accuracy between Binary and Decimal

Note that 0.1 (decimal) does not come out evenly when converted to binary

.1

x2

0.2

x2

0.4

x2

0.8

x2

1.6

x2

1.2

x2

0.4

x2

0.8

x2

1.6

x2

1.2

x2

0.4

...

.1 (decimal) = .0001100110011001100110011... (binary)

Also, .2, .3, .4, .6, .7, .8, and .9 are not exact

This poses a problem when trying to represent decimal fractions in a binary computer - always need to worry about accuracy

Accuracy Conversion

How many binary digits are necessary to represent a given decimal accuracy?

The proper relationship to examine is

If we know n, solve for m

So, to obtain 8 decimal place accuracy, we need 8/.3 = 26.7 bits of binary accuracy (in practice, we need at least 27 bits).

Remember quick power of 2 estimation:

3 decimal digits = 10 binary digits

So, going the other way, 60 binary digits will yield 20 decimal place accuracy.

Fundamentals of Computer Science1Number Systems