Next: Instructions Up: Konrad Zuses Z3 in Previous: Memory

Floating Point Numbers

Konrad Zuse used a semi-logarithm representation of numbers. Let us take the number 100. In the binary system this number can be written as:

100 = 1\( \bullet \)2\( ^{6} \) + 1\( \bullet \)2\( ^{5} \) + 0\( \bullet \)2\( ^{4} \) + 0\( \bullet \)2\( ^{3} \)+ 1\( \bullet \)2\( ^{2} \) + 0\( \bullet \)2\( ^{1} \) + 0\( \bullet \)2\( ^{0} \)= 64 + 32 + 4.

The number 100 can be created by the power of 2 related to the numbers: 26, 25 and 22 = 64 + 32 + 4. In the binary representation we use the 1 or 0 in order to represent the number. (These are exactly the factors 1 and 0 before the multiplication sign. In the binary digit system the number 100 can be written as: 1100100. This is a binary number without a comma. The number 100,5 can be represented as:

100,5 = 1\( \bullet \)2\( ^{6} \) + 1\( \bullet \)2\( ^{5} \) + 0\( \bullet \)2\( ^{4} \) + 0\( \bullet \)2\( ^{3} \)+ 1\( \bullet \)2\( ^{2} \) + 0\( \bullet \)2\( ^{1} \) + 0\( \bullet \)2\( ^{0} \) + 1 \( \bullet \)2\( ^{-1} \)= 64 + 32 + 4 + 0,5.

In the binary system we write this as: 1100100,1. The most right 1 of the comma is 2-1= 0,5. These are binary numbers with a comma, we also say fixed point numbers. To represent numbers in the 0 or 1 notation has big advantages for computers. This has not changed till today. Since only two states or two numbers are considered, we can use pair circuits to store numbers and to operate with them. In 1939 relays were such building blocks. However, the above representation of numbers has a disadvantage. Konrad Zuse used 22 bits for his number, but with 22 bits we can only represent small numbers in a range 222-1. For this reason Konrad Zuse used the binary floating point representation (semi-logarithmic representation) for the numbers. Let us consider the number 100 again.

100 = 1\( \bullet \)2\( ^{6} \) + 1\( \bullet \)2\( ^{5} \) + 0\( \bullet \)2\( ^{4} \) + 0\( \bullet \)2\( ^{3} \)+ 1\( \bullet \)2\( ^{2} \) + 0\( \bullet \)2\( ^{1} \) + 0\( \bullet \)2\( ^{0} \)= 64 + 32 + 4.

Konrad Zuse divided the number in an exponent and a mantissa. As the exponent he used the power of two of the highest exponent, in our case 6. This number was converted into the binary system and we got 110. As the mantissa we used the binary number 1100100. The new number - a floating point number - is now:

00000110 110010000000000.

The first digit of the mantissa always is 1. For this reason the first 1 is left out and the mantissa is 100100 instead of 1100100. Doing this, Konrad Zuse did win one digit for a higher accuracy of his numbers. Instead of 14 bits he had 15 bits for the mantissa. The number 100 is now:

00000110 10010000000000.

The number 100.5 in the binary system is: 1100100,1. The floating point number is:

00000110 110010010000000.

In the Z3 the number is:

00000110 10010010000000.

Using this concept, Konrad Zuse was able to handle very big and very small numbers in a range of approximately \ensuremath{} 2-63 to \ensuremath{} 263.


Slav Petrov 2001-07-02