GloomY
2004-04-15, 21:28:55
Öff, warum sind denn das 13 (!) Seiten? :???: :o
Ich hab' jetzt erstmal ein bisschen mehr als die erste halbe Seite: The floating-point format in detail
Introduction
Floating-point numbers gain more and more importance in the range of graphics and terms like "FP24" and "FP32" are widely spread and well-known. But what does "Floating Point" mean exactly? It is clear that i.e. FP24 is a 24 bit number in floating point format. We want to examine what this concretely means in a three part article series.
First of all we will address the issue of integer and fix point representation. This "preparatory work" is necessary to allow for comparison of other common data types. Afterwards, we will look at the floating point numbers and explain how those formats are represented in hardware. With help of the FP16 example, we will form the basic principles in order to deepen interesting aspects and to take a look at FP24 up to FP80 formats. We will only cover negligibly the issues of how to compute with FP-numbers or what types of circuits are necessary to realise those calculations. Our goal is to provide the basic understanding, not a course in circuitry.
Mostly, we will use english terms (comment from translator: of course ;-) , but remember that the original article was written in German), particularly if those are common terms. That seemed to be more useful for us than spasmodically invent new (German) words. Numerical values in examples are mostly rounded to three digits, without additionally mentioning that rounding was used. If you like you may calculate yourself, if not rounded values should suffice.
The Byte - a basic format
In the 1980s, most homecomputers are based on 8 bit technology, whereas the first IBM-PCs were internally working with 16 bit word length after all. 16 bit word length means that data is being devided and processed in chunks of 16 bits. However, due to compatibility reasons 8 bit registers can still be used, even nowadays. Eight bit = one Byte, and this Byte is the base unit for storage capacity measurement. One bit can be in either two states: 0 or 1. With 8 bit (= 1 Byte) it is possible to encode 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 = 2^8 = 256 different states. Usually, those states are encoded to the number range of 0 to 255.
At the same time the stored number can be calculated on the basis of the bit pattern. This property is very important because the number format should imply the ability to compute with it. It is possible to draft relatively simple circuits with this "direct" storage, whereas other encoded representations require more complex circuits, which we will see shortly.
Within a byte, every of the eight bits is being assigned a valence. From right to left those valences are 1 - 2 - 4 - 8 - 16 - 32 - 64 - 128. With every digit the valence is doubled (which can be expressed by the sequence of powers of two: 2^0, 2^1, 2^2 and so on until 2^7). Adding the valance for alle digits if a bit is set, the corresponding sum is the number which is represented by the bit pattern. What looks at first glance like weired calculations, is nothing else than the "natural" representation of binary numbers. Encoding for example the decimal number 97 the second digit from left has the valence 10, therewith the result is 9*10 + 7*1 = 90 + 7 = 97. In the field of computers it is necessary to think in binary, that means taking 2 as basis.
Ich mach' hier erstmal Schluss, weil ich was essen gehe. Ansonsten muss ich gestehen, dass ich die Kommaregeln des Englischen vergessen habe. Wie war das nochmal mit den erforderlichen und nicht erfoderlichen Relativsätzen? (definig and non-defining relative clauses)?
Ich hab' jetzt erstmal ein bisschen mehr als die erste halbe Seite: The floating-point format in detail
Introduction
Floating-point numbers gain more and more importance in the range of graphics and terms like "FP24" and "FP32" are widely spread and well-known. But what does "Floating Point" mean exactly? It is clear that i.e. FP24 is a 24 bit number in floating point format. We want to examine what this concretely means in a three part article series.
First of all we will address the issue of integer and fix point representation. This "preparatory work" is necessary to allow for comparison of other common data types. Afterwards, we will look at the floating point numbers and explain how those formats are represented in hardware. With help of the FP16 example, we will form the basic principles in order to deepen interesting aspects and to take a look at FP24 up to FP80 formats. We will only cover negligibly the issues of how to compute with FP-numbers or what types of circuits are necessary to realise those calculations. Our goal is to provide the basic understanding, not a course in circuitry.
Mostly, we will use english terms (comment from translator: of course ;-) , but remember that the original article was written in German), particularly if those are common terms. That seemed to be more useful for us than spasmodically invent new (German) words. Numerical values in examples are mostly rounded to three digits, without additionally mentioning that rounding was used. If you like you may calculate yourself, if not rounded values should suffice.
The Byte - a basic format
In the 1980s, most homecomputers are based on 8 bit technology, whereas the first IBM-PCs were internally working with 16 bit word length after all. 16 bit word length means that data is being devided and processed in chunks of 16 bits. However, due to compatibility reasons 8 bit registers can still be used, even nowadays. Eight bit = one Byte, and this Byte is the base unit for storage capacity measurement. One bit can be in either two states: 0 or 1. With 8 bit (= 1 Byte) it is possible to encode 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 = 2^8 = 256 different states. Usually, those states are encoded to the number range of 0 to 255.
At the same time the stored number can be calculated on the basis of the bit pattern. This property is very important because the number format should imply the ability to compute with it. It is possible to draft relatively simple circuits with this "direct" storage, whereas other encoded representations require more complex circuits, which we will see shortly.
Within a byte, every of the eight bits is being assigned a valence. From right to left those valences are 1 - 2 - 4 - 8 - 16 - 32 - 64 - 128. With every digit the valence is doubled (which can be expressed by the sequence of powers of two: 2^0, 2^1, 2^2 and so on until 2^7). Adding the valance for alle digits if a bit is set, the corresponding sum is the number which is represented by the bit pattern. What looks at first glance like weired calculations, is nothing else than the "natural" representation of binary numbers. Encoding for example the decimal number 97 the second digit from left has the valence 10, therewith the result is 9*10 + 7*1 = 90 + 7 = 97. In the field of computers it is necessary to think in binary, that means taking 2 as basis.
Ich mach' hier erstmal Schluss, weil ich was essen gehe. Ansonsten muss ich gestehen, dass ich die Kommaregeln des Englischen vergessen habe. Wie war das nochmal mit den erforderlichen und nicht erfoderlichen Relativsätzen? (definig and non-defining relative clauses)?