DVG1 - 05 - Datenformate1 Datenformate. DVG1 - 05 - Datenformate 2 Speicherhierarchie Prozessor,...

29
DVG1 - 05 - Datenformate 1 Datenformate

Transcript of DVG1 - 05 - Datenformate1 Datenformate. DVG1 - 05 - Datenformate 2 Speicherhierarchie Prozessor,...

Page 1: DVG1 - 05 - Datenformate1 Datenformate. DVG1 - 05 - Datenformate 2 Speicherhierarchie Prozessor, Register, CPU sehr schnell, sehr teuer, sehr klein 1.

DVG1 - 05 - Datenformate 1

Datenformate

Page 2: DVG1 - 05 - Datenformate1 Datenformate. DVG1 - 05 - Datenformate 2 Speicherhierarchie Prozessor, Register, CPU sehr schnell, sehr teuer, sehr klein 1.

DV

G1

- 05 - D

ate

nfo

rmate

2

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

Page 3: DVG1 - 05 - Datenformate1 Datenformate. DVG1 - 05 - Datenformate 2 Speicherhierarchie Prozessor, Register, CPU sehr schnell, sehr teuer, sehr klein 1.

DV

G1

- 05 - D

ate

nfo

rmate

3

Kleinste Speichereinheit: 1bitja - 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

.......

Page 4: DVG1 - 05 - Datenformate1 Datenformate. DVG1 - 05 - Datenformate 2 Speicherhierarchie Prozessor, Register, CPU sehr schnell, sehr teuer, sehr klein 1.

DV

G1

- 05 - D

ate

nfo

rmate

4

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

Page 5: DVG1 - 05 - Datenformate1 Datenformate. DVG1 - 05 - Datenformate 2 Speicherhierarchie Prozessor, Register, CPU sehr schnell, sehr teuer, sehr klein 1.

DV

G1

- 05 - D

ate

nfo

rmate

5

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.

Page 6: DVG1 - 05 - Datenformate1 Datenformate. DVG1 - 05 - Datenformate 2 Speicherhierarchie Prozessor, Register, CPU sehr schnell, sehr teuer, sehr klein 1.

DV

G1

- 05 - D

ate

nfo

rmate

6

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);

Page 7: DVG1 - 05 - Datenformate1 Datenformate. DVG1 - 05 - Datenformate 2 Speicherhierarchie Prozessor, Register, CPU sehr schnell, sehr teuer, sehr klein 1.

DV

G1

- 05 - D

ate

nfo

rmate

7

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.

Page 8: DVG1 - 05 - Datenformate1 Datenformate. DVG1 - 05 - Datenformate 2 Speicherhierarchie Prozessor, Register, CPU sehr schnell, sehr teuer, sehr klein 1.

DV

G1

- 05 - D

ate

nfo

rmate

8

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

Page 9: DVG1 - 05 - Datenformate1 Datenformate. DVG1 - 05 - Datenformate 2 Speicherhierarchie Prozessor, Register, CPU sehr schnell, sehr teuer, sehr klein 1.

DV

G1

- 05 - D

ate

nfo

rmate

9

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

Page 10: DVG1 - 05 - Datenformate1 Datenformate. DVG1 - 05 - Datenformate 2 Speicherhierarchie Prozessor, Register, CPU sehr schnell, sehr teuer, sehr klein 1.

DV

G1

- 05 - D

ate

nfo

rmate

10

void

void ist der Rückgabewert von Funktionen, die keinen Wert zurückgeben.

Wrapper Typ: Void

Page 11: DVG1 - 05 - Datenformate1 Datenformate. DVG1 - 05 - Datenformate 2 Speicherhierarchie Prozessor, Register, CPU sehr schnell, sehr teuer, sehr klein 1.

DV

G1

- 05 - D

ate

nfo

rmate

11

Zusammenfassung

Typ Größe Minimum Maximum Wrapper Typboolean 1 bit - Booleanchar 16 bit Unicode 0 Unicode 216-1 Charbyte 8 bit -128 127 Byteshort 16 bit -215 215-1 Shortint 32 bit -231 231-1 Integerlong 64 bit -263 263-1 Longfloat 32 bit IEEE 754 IEEE 754 Floatdouble 64 bit IEEE 754 IEEE 754 Doublevoid - - - Void

Page 12: DVG1 - 05 - Datenformate1 Datenformate. DVG1 - 05 - Datenformate 2 Speicherhierarchie Prozessor, Register, CPU sehr schnell, sehr teuer, sehr klein 1.

DV

G1

- 05 - D

ate

nfo

rmate

12

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

Page 13: DVG1 - 05 - Datenformate1 Datenformate. DVG1 - 05 - Datenformate 2 Speicherhierarchie Prozessor, Register, CPU sehr schnell, sehr teuer, sehr klein 1.

DV

G1

- 05 - D

ate

nfo

rmate

13

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

Page 14: DVG1 - 05 - Datenformate1 Datenformate. DVG1 - 05 - Datenformate 2 Speicherhierarchie Prozessor, Register, CPU sehr schnell, sehr teuer, sehr klein 1.

DV

G1

- 05 - D

ate

nfo

rmate

14

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

Page 15: DVG1 - 05 - Datenformate1 Datenformate. DVG1 - 05 - Datenformate 2 Speicherhierarchie Prozessor, Register, CPU sehr schnell, sehr teuer, sehr klein 1.

DV

G1

- 05 - D

ate

nfo

rmate

15

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

Page 16: DVG1 - 05 - Datenformate1 Datenformate. DVG1 - 05 - Datenformate 2 Speicherhierarchie Prozessor, Register, CPU sehr schnell, sehr teuer, sehr klein 1.

DV

G1

- 05 - D

ate

nfo

rmate

16

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

Page 17: DVG1 - 05 - Datenformate1 Datenformate. DVG1 - 05 - Datenformate 2 Speicherhierarchie Prozessor, Register, CPU sehr schnell, sehr teuer, sehr klein 1.

DV

G1

- 05 - D

ate

nfo

rmate

17

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

Zeilenschaltung \n (\u000A) Tabulaturzeichen \t (\u0009) Rückschritt \b (\u0008) Wagenrücklauf \r (\u000D) Seitenvorschub \f (\u000C) Apostroph/Hochkomma \' (\u0027) Anführungszeichen \" (\u0022) Umgekehrter Schrägstrich \\ (\u005C)

Page 18: DVG1 - 05 - Datenformate1 Datenformate. DVG1 - 05 - Datenformate 2 Speicherhierarchie Prozessor, Register, CPU sehr schnell, sehr teuer, sehr klein 1.

DV

G1

- 05 - D

ate

nfo

rmate

18

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"

Page 19: DVG1 - 05 - Datenformate1 Datenformate. DVG1 - 05 - Datenformate 2 Speicherhierarchie Prozessor, Register, CPU sehr schnell, sehr teuer, sehr klein 1.

DV

G1

- 05 - D

ate

nfo

rmate

19

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!

Page 20: DVG1 - 05 - Datenformate1 Datenformate. DVG1 - 05 - Datenformate 2 Speicherhierarchie Prozessor, Register, CPU sehr schnell, sehr teuer, sehr klein 1.

DV

G1

- 05 - D

ate

nfo

rmate

20

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)

Page 21: DVG1 - 05 - Datenformate1 Datenformate. DVG1 - 05 - Datenformate 2 Speicherhierarchie Prozessor, Register, CPU sehr schnell, sehr teuer, sehr klein 1.

DV

G1

- 05 - D

ate

nfo

rmate

21

i -i ~i ++i --i 1 -1 -2 2 0 0 0 -1 1 -1 -1 1 0 0 -2 255 -255 -256 256 254 -255 255 254 -254 -256 2147483647 -2147483647 -2147483648 -2147483648 2147483646 -2147483648 -2147483648 2147483647 -2147483647 2147483647

int i;

Page 22: DVG1 - 05 - Datenformate1 Datenformate. DVG1 - 05 - Datenformate 2 Speicherhierarchie Prozessor, Register, CPU sehr schnell, sehr teuer, sehr klein 1.

DV

G1

- 05 - D

ate

nfo

rmate

22

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

Page 23: DVG1 - 05 - Datenformate1 Datenformate. DVG1 - 05 - Datenformate 2 Speicherhierarchie Prozessor, Register, CPU sehr schnell, sehr teuer, sehr klein 1.

DV

G1

- 05 - D

ate

nfo

rmate

23

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

Page 24: DVG1 - 05 - Datenformate1 Datenformate. DVG1 - 05 - Datenformate 2 Speicherhierarchie Prozessor, Register, CPU sehr schnell, sehr teuer, sehr klein 1.

DV

G1

- 05 - D

ate

nfo

rmate

24

i j i+j i<<j i>>j i>>>j i&j i|j i^j 1 2 3 4 0 0 0 3 3 0 2 2 0 0 0 0 2 2

-1 2 1 -4 -1 1073741823 2 -1 -3 255 2 257 1020 63 63 2 255 253

-255 2 -253 -1020 -64 1073741760 0 -253 -253 256 2 258 1024 64 64 0 258 258

-256 2 -254 -1024 -64 1073741760 0 -254 -254 1 4 5 16 0 0 0 5 5 0 4 4 0 0 0 0 4 4

-1 4 3 -16 -1 268435455 4 -1 -5 255 4 259 4080 15 15 4 255 251

-255 4 -251 -4080 -16 268435440 0 -251 -251 256 4 260 4096 16 16 0 260 260

-256 4 -252 -4096 -16 268435440 0 -252 -252

Page 25: DVG1 - 05 - Datenformate1 Datenformate. DVG1 - 05 - Datenformate 2 Speicherhierarchie Prozessor, Register, CPU sehr schnell, sehr teuer, sehr klein 1.

DV

G1

- 05 - D

ate

nfo

rmate

25

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;

Page 26: DVG1 - 05 - Datenformate1 Datenformate. DVG1 - 05 - Datenformate 2 Speicherhierarchie Prozessor, Register, CPU sehr schnell, sehr teuer, sehr klein 1.

DV

G1

- 05 - D

ate

nfo

rmate

26

Operationen mit Gleitkommazahlen

Folgende Operatoren arbeiten bei Gleitkommazahlen analog zu Festkommazahlen:

Unäre Operatoren : „-“, „++“, „--“ Binäre Operatoren : „+“, „-“, „*“, „/“, „%“, „>“, „<“, „>=“, „<=“,

„==“, „!=“ ternärer Operator : „?:“ Zuweisungsoperatoren : „=“, „op=“

Page 27: DVG1 - 05 - Datenformate1 Datenformate. DVG1 - 05 - Datenformate 2 Speicherhierarchie Prozessor, Register, CPU sehr schnell, sehr teuer, sehr klein 1.

DV

G1

- 05 - D

ate

nfo

rmate

27

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!“

Page 28: DVG1 - 05 - Datenformate1 Datenformate. DVG1 - 05 - Datenformate 2 Speicherhierarchie Prozessor, Register, CPU sehr schnell, sehr teuer, sehr klein 1.

DV

G1

- 05 - D

ate

nfo

rmate

28

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.

Page 29: DVG1 - 05 - Datenformate1 Datenformate. DVG1 - 05 - Datenformate 2 Speicherhierarchie Prozessor, Register, CPU sehr schnell, sehr teuer, sehr klein 1.

DV

G1

- 05 - D

ate

nfo

rmate

29

Reihenfolge von Operatoren

15 . [] ()

14 - ++ -- ! ~ instanceof

13 * / %

12 + -

11 << >> >>>

10 < > <= >=

9 == !=

8 &

7 ^

6 |

5 &&

4 ||

3 ?:

2 = op=

1 ,

• 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.