290 likes | 425 Views
Datenformate. Speicherhierarchie. Prozessor, Register, CPU sehr schnell, sehr teuer, sehr klein 1 ns, 1 $/Byte, 1kByte. Hauptspeicher, RAM schnell, mäßig teuer, mäßig groß 60 ns, 10 -3 $/Byte, 1 GByte. Externe Speicher, Platten, Bänder langsam, billig, riesig
E N D
Datenformate DVG1 - 05 - Datenformate
Speicherhierarchie Prozessor, Register, CPU sehr schnell, sehr teuer, sehr klein 1 ns, 1 $/Byte, 1kByte Hauptspeicher, RAM schnell, mäßig teuer, mäßig groß 60 ns, 10-3 $/Byte, 1 GByte Externe Speicher, Platten, Bänder langsam, billig, riesig 10 ms...1 min, 10-9 $/Byte, 100 GByte...1 PByte DVG1 - 05 - Datenformate
Kleinste Speichereinheit: 1bit ja - nein wahr - falsch 0 - 1 Strom fließt - Strom fließt nicht Ladung gespeichert - Ladung nicht gespeichert größere Mengen: 1 kbit = 210 bit = 1024 bit ~ 103 bit 1 Mbit = 220 bit = 1024 kbit = 1048576 bit ~ 106 bit 1 Gbit = 230 bit = 1024 Mbit = 1073741824 bit ~ 109 bit 1 Tbit = 240 bit = 1024 Gbit = 1099511627776 bit ~ 1012 bit 1 Pbit = 250 bit = 1024 Tbit = 1125899906842624 bit ~ 1015 bit ....... DVG1 - 05 - Datenformate
drei bit werden zu einer Oktalziffer zusammengefaßt 000...111 0...7 Zahlen, die mit einer „0“ beginnen werden als Oktalzahlen interpretiert. vier bit werden zu einer Hexadezimalziffer zusammengefasst 0000 ... 1111 0 ... F Zahlen, die mit „0x“ beginnen werden als Hexadezimalzahlen interpretiert. 8 bit = 1 Byte 00000000 ... 11111111 0 ... 255 Analog bit gibt es kByte, MByte, GByte, TByte, PByte ... Byte: 0x00 ... 0xFF DVG1 - 05 - Datenformate
Primitive Datentypen • Allgemeine Form: typ name = wert; z.B.: int i = 12; • Variable name mit dem Typ typ wird direkt im Speicher angelegt und mit dem Wert wert initialisiert. • Wird typ name; benutzt, werden die Standardwerte zur Initialisierung benutzt. • Standardwert ist immer „alle bit 0“. • Zu jedem primitiven Datentyp gibt es einen „Wrapper Typ“ (Umschlag Typ). Mit dieser kann man Objekte von dem Typ mit new erzeugen. DVG1 - 05 - Datenformate
boolean • Logischer Wahrheitswert • Ergebnis logischer Ausdrücke • mögliche Werte: false, true • Standardwert: false • Wrapper Typ: Boolean boolean schalter = true; schalter = false; if (schalter) { .... } else { .... } schalter = !schalter; schalter = (n > 5) & (i < 3); DVG1 - 05 - Datenformate
char • Ein Zeichen des Unicodes • mögliche Werte: 0x0000 ... 0xFFFF. Konstanten, der Form '\uxxxx' werden als Unicode-Zeichen in Hexadezimaldarstellung interpretiert. z.B.: '0' = 48 = '\u0030' = 0x0030 'A' = 65 = '\u0041' = 0x0041 'a' = 97 = '\u0061' = 0x0061 • enthält die Zeichen vieler Sprachen, z.B. griechisch, kyrillisch, arabisch, chinesisch (?) .... • Programmtexte können alle Unicode-Zeichen benutzen. Es kann z.B. eine Variable µ definiert werden. • Standardwert: '\u0000' • Wrapper Typ: Char • char und boolean sind die einzigen vorzeichenfreien Datentypen. DVG1 - 05 - Datenformate
byte, short, int, long • Verschieden lange ganze Zahlen • Länge: byte 8 bit; short 16 bit; int 32 bit; long 64 bit • mögliche Werte: alle ganzen Zahlen zwischen -2l-1 und 2l-1-1, l = Länge des Typs (8, 16, 32, 64) • interne Darstellung: im „zweier-Komplement“, d.h. 0x00 ... 0x7F entspricht den positiven Zahlen 0x80 ... 0xFF entspricht den negativen Zahlen, wert = wert - 256 0x00 ... 0x7F 0x80 0x81 ... 0xFF 0 ... 127 128 129 ... 255 0 ... 127 -128 -127 ... -1 • long-Konstanten enden mit „L“, z.B. 321L • Alle anderen ganzzahligen Konstanten sind immer int. • Standardwert: 0 • Wrapper Typen: Byte, Short, Integer, Long DVG1 - 05 - Datenformate
float, double • Gleitkommazahlen, werden im IEEE 754 Format gespeichert • Länge: float 32 bit; double 64 bit • 1.4 10-45 < |float| < 3.4 10+38 • 4.9 10-324 < |double| < 1.7 10+308 • zusätzlich +0, -0, +unendlich, -unendlich, keineZahl (NaN) • alle Operationen sind zulässig und liefern definierte Resultate z.B: 1/+0 = +unendlich 1/-0 = -unendlich +0/+0 = NaN • float-Konstanten enden mit „f“, z.B. -1.234e23f • double-Konstanten enden mit „d“, z.B. 1.234567e-243d • Standardwert: 0.0f , 0.0d • Wrapper Typ: Float, Double DVG1 - 05 - Datenformate
void • void ist der Rückgabewert von Funktionen, die keinen Wert zurückgeben. • Wrapper Typ: Void DVG1 - 05 - Datenformate
Zusammenfassung DVG1 - 05 - Datenformate
Gemeinsame Eigenschaften der primitiven Datentypen: • belegen einen feste Speichermenge, 1bit (boolean) 1 Byte (byte) 2 Byte (char, short) 4 Byte (int, float) 8 Byte (long, double) • Variable von primitiven Typen werden direkt im Speicher angelegt z.B. bewirkt die Anweisung double x = 1.0d; die Reservierung von 8Byte Speicher und die Initialisierung mit dem Wert 1.0d DVG1 - 05 - Datenformate
Bezeichner • bestehen aus • Buchstaben (a-z, A-Z, Unicode) • Ziffern (0-9) • Sonderzeichen (´_´ und ´$´) • beginnen nie mit einer Ziffer • z.B.: • zulässig sind • abcd123 • xy$05 • märz_23 • nicht zulässig sind • 123xy • märz-23 DVG1 - 05 - Datenformate
Gültigkeit von Bezeichnern • Variable bekommen in der Anweisung Speicherplatz zugewiesen, in der sie vereinbart werden. • Der Platz den Variable belegen wird am Ende des Blockes freigegeben, in dem sie vereinbart wurden. • Z.B.: float f (float x) { int i=3; i=i+1; float x0 = 0; x=x+x0; return Math.abs(x); } i ist in dem ganzen Block bekannt, x0 nur in der zweiten Hälfte DVG1 - 05 - Datenformate
float f (float x) { int i=0; while (i<10) { float y=i*3.14159f; System.out.println(i+"*pi="+y); i=i+1; } } i ist im ganzen Block bekannt y ist nur in dem inneren Block bekannt DVG1 - 05 - Datenformate
Literale • Festkommaliteral • enthält nur Ziffern und < 231 ==> int z.B. 12345 • enthält nur Ziffern und >=231 oder endet mit l oder L ==> long z.B. 12345L • beginnt mit 0x oder 0X ==> hexadezimale Darstellung • beginnt mit 0 ==> oktale Darstellung • Gleitkommaliteral • enthält Ziffern, einen ´.´ oder ein ´e´ oder ´E´ ==> float z.B.: 3.14159, 3.3333e-1, 2345E22 • wenn ein ´d´ oder ´D´ angehängt wird ==> double z.B.: 3.14159d, 3.3333e-1D, 2345E22d • logisches Literal • true und false DVG1 - 05 - Datenformate
Alphanumerische Literale • ein Zeichen in Hochkomma eingeschlossen • Unicodezeichen mit • \ddd (octal), führende Nullen können entfallen • \udddd (hexadezimal) z.B: ´A´ = ´\101´ = ´\u0041´ ; ´ ´ = ´\40´ = ´\u0020´ • besondere Zeichen DVG1 - 05 - Datenformate
Zeichenkettenliteral • Beliebige Folge von Zeichen, die in Anführungszeichen eingeschlossen sind. Z.B.: "Hello, World!" "\u0048\u0065\u006C\u006c\u006f\u002c\u0020\u0057\u006f\u0072\u006C\u0064\u0021" "\110\145\154\154\157\54\40\127\157\162\154\144\41" DVG1 - 05 - Datenformate
Typumwandlungen • Implizit immer in „größere“ Typen, d.h • byte ==> int • char ==> int • short ==> int • int ==> long • float ==> double • byte, char, short, int, long ==> float, double • byte und short werden vor der Verarbeitung immer nach int konvertiert • Explizite Umwandlung durch „casting“ : (typ)ausdruck • z.B.: short s; byte b = (byte)s; • Umwandlung kann mit Informationsverlusten verbunden sein! DVG1 - 05 - Datenformate
Operationen mit Festkommazahlen • Unäre Operatoren • Negation „-“ • Bit-Komplement „~“ • bitweises ersetzen der 0 durch 1 und umgekehrt • Inkrement „++“ • j = ++i <==> i=i+1; j=i; (Präinkrement) • j = i++ <==> j=i; i=i+1; (Postinkrement) • Dekrement „--“ • j = --i <==> i=i-1; j=i; (Prädekrement) • j = i-- <==> j=i; i=i-1; (Postdekrement) DVG1 - 05 - Datenformate
int i; DVG1 - 05 - Datenformate
Binäre Operatoren • Addition „+“ • Subtraktion „-“ • Multiplikation „*“ • Division „/“ mit Rundung zur Null • Modulo „%“ • a%b = a - (a/b)*b • bitweise Verschiebung nach links „<<“ • a << b, die Binärdarstellung von a wird um (b%L) Stellen nach links verschoben, rechts wird mit „0“ aufgefüllt. L ist die Länge von a (byte 8, char und short 16, int 32, long 64) • bitweise Verschiebung nach rechts unter Berücksichtigung des Vorzeichens „>>“ • a >> b, die Binärdarstellung von a wird um (b%L) Stellen nach rechts verschoben, dabei wird von links mit dem ersten bit aufgefüllt DVG1 - 05 - Datenformate
bitweise Verschiebung nach rechts ohne Berücksichtigung des Vorzeichens „>>>“ • a >>> b, die Binärdarstellung von a wird um (b%L) Stellen nach rechts verschoben, dabei wird von links mit „0“ aufgefüllt • logische Operatoren • bitweises logisches „und“ : „&“ • bitweises logisches „oder“ : „|“ • bitweises logisches „exklusives oder“ : „^“ • Vergleichoperatoren „>“, „<“, „>=“, „<=“, „==“, „!=“ • ergeben immer boolsche Werte DVG1 - 05 - Datenformate
Ternärer Operator „?:“ • boolausdr ? ausdruck1 : ausdruck2 ; • boolausdr == true ==> ausdruck1 • boolausdr == false ==> ausdruck2 • Zuweisungsoperatoren • Zuweisung „=“ • kombinierte Zuweisung „op=“ , wobei op ein beliebiger binärer Operator ist. i op= j ist äquivalent zu i = i op j. z.B.: • i += 1 <==> i = i+1 <==> i++ • i <<= 4 <==> i = i << 4 • Zuweisungsoperatoren besitzen den Wert, der zugewiesen wird. Daher können sie in Ausdrücken wiederverwendet werden. Z.B.: • i = 1 + (j=3*5) *7; ==> j=15; i=106; • i = (j = 999); ==> j=999; i=999; DVG1 - 05 - Datenformate
Operationen mit Gleitkommazahlen • Folgende Operatoren arbeiten bei Gleitkommazahlen analog zu Festkommazahlen: • Unäre Operatoren : „-“, „++“, „--“ • Binäre Operatoren : „+“, „-“, „*“, „/“, „%“, „>“, „<“, „>=“, „<=“, „==“, „!=“ • ternärer Operator : „?:“ • Zuweisungsoperatoren : „=“, „op=“ DVG1 - 05 - Datenformate
Operationen mit Zeichenketten • Verkettung „+“ • string1 + string2 ergibt die Zeichenkette, die aus Aneinanderhängen der Zeichenketten string1 und string2 entsteht. Z.B.: • “Hallo, “ + “World!“ ergibt “Hallo, World!“ DVG1 - 05 - Datenformate
Operationen mit boolschen Werten • Operatoren mit unverkürzter Auswertung • und „&“, oder „|“, exklusives oder „^“ • Die Ausdrücke werden ausgewertet auch wenn das Ergebnis schon sicher ist. Z.B • b=(i > j) | f(j) ; Wenn i>j ist, müsste f(j) nicht aufgerufen werden um b zu bestimmen. Wird aber doch aufgerufen. • Operatoren mit verkürzter Auswertung • und „&&“, oder „||“ • Die Ausdrücke werden nur soweit ausgewertet, bis das Ergebnis des Ausdruckes bekannt ist. DVG1 - 05 - Datenformate
Reihenfolge von Operatoren • Die Operationen werden der Priorität nach abgearbeitet. • Bei gleicher Priorität werden die Operatoren von links nach rechts abgearbeitet. • Zuweisungsoperatoren werden von rechts nach links abgearbeitet. DVG1 - 05 - Datenformate