Hallo,
nach dem zu urteilen, was Du geschrieben hast, glaube ich, Du hast noch nicht ganz verstanden, wie die Größe mit dem Wertebereich zusammenhängt. Bei den Ganzzahl Datentypen ist es noch relativ einfach. Die Größe ist immer eine ganze Anzahl von Bytes, also Vielfache von 8 Bit. Bei den vorzeichenlosen Ganzzahl Datentypen ergibt das bei n = m * 8 Bit einen Wertebereich von 0 bis 2 hoch n - 1. Bei den vorzeichenbehafteten Ganzzahl Datentypen kann man von der 0 ausgehend bis + (2 hoch (n-1)) - 1 zählen. Das höchste Bit ist dabei immer 0. Und beim Zählen ins Negative ist das höchste Bit immer 1. Man kann dabei bis - (2 hoch (n-1)) zählen. Das höchste Bit ist also das Vorzeichen.
Der Link, den mse Dir gegeben hat, nennt 2 Möglichkeiten bei Integer (2 oder 4 Byte). Das liegt daran, dass es Lazarus für mehrere Platformen gibt. Bei Linux und Windows hat Integer in beiden Fällen 4 Byte. Es gibt aber noch mehr Platformen und bei welcher Lazarus Platform Integer 2 Byte hat weiß ich nicht. Ein Vorläufer von Lazarus ist Borland Delphi 1. Das hat 2 Byte für Integer.
Wahrscheinlich erwartet Dein Lehrer, dass Du auch etwas zu Fließkomma Datentypen vorträgst. Siehe dazu
http://www.freepascal.org/docs-html/ref ... 310003.1.2
Auch diese belegen immer Vielfache von 8 Bit. Alles andere wäre Platzverschwendung. Aber die Bits werden außer bei Comp und Currency in zwei Gruppen und das Vorzeichen aufgeteilt, wobei die Gruppen nicht unbedingt Vielfache von 8 Bit sind. Eine Gruppe ist für die Mantisse, die andere Gruppe für den Exponenten. Die Mantisse ist dabei normiert, so dass vor dem Komma eine gedachte 1 steht, die normalerweise nicht abgespeichert wird. Sie besteht aus den Bits 2 hoch -1, 2 hoch -2, ... Daraus ergibt sich die Genauigkeit (signifikante Stellenzahl). Der Exponent hat meistens einen Wertebereich unsymmetrisch zur 0. Fließkommazahl = +/- Mantisse * 2 hoch (Exponent - Exponent Verschiebung zur 0). Durch die binäre Darstellung lassen sich die Dezimalzahlen fast nie exakt darstellen. Dezimal 0,1 ist z.B. ein unendlicher binärer Bruch. Bei Vergleichen muss man daher beachten:
Code: Alles auswählen
var x, y : real;
if x = y then
writeln('Glück gehabt')
else
writeln('Du landest hier, obwohl Du das nicht erwartest');
if abs(x - y) < 1e-10 then
writeln('Das zählt als gleich')
else
writeln('Das zählt als ungleich');
Siehe auch
http://de.wikipedia.org/wiki/Flie%C3%9Fkomma
In der Finanzmathematik sind die Rundungsfehler aus der binären Darstellung ein großes Problem. Daher gibt es den Festkomma Datentyp Currency. Das ist ein Integer mit dem gedachten Exponenten 10 hoch - 4. Abgesehen von Lazarus gibt es auch BCD Zahlen. Dabei steckt man zwei Dezimalziffern in je 4 Bit eines Bytes. Man verschwendet also etwas Speicher. Dafür arbeiteten Berechnungen ebenso exakt wie in unserem menschlichen Zehnersystem.
Gruß
Heiner