DVG1 - 05 - Datenformate 1 Datenformate. 2 Speicherhierarchie Prozessor, Register, CPU sehr schnell,...

29
DVG1 - 05 - Datenformate DVG1 - 05 - Datenformate 1 Datenformate Datenformate

Transcript of DVG1 - 05 - Datenformate 1 Datenformate. 2 Speicherhierarchie Prozessor, Register, CPU sehr schnell,...

Page 1: DVG1 - 05 - Datenformate 1 Datenformate. 2 Speicherhierarchie Prozessor, Register, CPU sehr schnell, sehr teuer, sehr klein 1 ns, 1 $/Byte, 1kByte Hauptspeicher,

DVG1 - 05 - DatenformateDVG1 - 05 - Datenformate 11

DatenformateDatenformate

Page 2: DVG1 - 05 - Datenformate 1 Datenformate. 2 Speicherhierarchie Prozessor, Register, CPU sehr schnell, sehr teuer, sehr klein 1 ns, 1 $/Byte, 1kByte Hauptspeicher,

22 DVG1 - 05 - DatenformateDVG1 - 05 - Datenformate

SpeicherhierarchieSpeicherhierarchie

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 - Datenformate 1 Datenformate. 2 Speicherhierarchie Prozessor, Register, CPU sehr schnell, sehr teuer, sehr klein 1 ns, 1 $/Byte, 1kByte Hauptspeicher,

33 DVG1 - 05 - DatenformateDVG1 - 05 - Datenformate

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 - Datenformate 1 Datenformate. 2 Speicherhierarchie Prozessor, Register, CPU sehr schnell, sehr teuer, sehr klein 1 ns, 1 $/Byte, 1kByte Hauptspeicher,

44 DVG1 - 05 - DatenformateDVG1 - 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

Page 5: DVG1 - 05 - Datenformate 1 Datenformate. 2 Speicherhierarchie Prozessor, Register, CPU sehr schnell, sehr teuer, sehr klein 1 ns, 1 $/Byte, 1kByte Hauptspeicher,

55 DVG1 - 05 - DatenformateDVG1 - 05 - Datenformate

Primitive DatentypenPrimitive DatentypenAllgemeine Form:Allgemeine Form:

typ name = wert;typ name = wert;

z.B.:z.B.:

int i = 12;int i = 12;

Variable Variable namename mit dem Typ mit dem Typ typtyp wird direkt im Speicher angelegt und wird direkt im Speicher angelegt und mit dem Wert mit dem Wert wertwert initialisiert. initialisiert.

WirdWird

typ name;typ name;

benutzt, werden die Standardwerte zur Initialisierung benutzt.benutzt, werden die Standardwerte zur Initialisierung benutzt.

Standardwert ist immer „alle bit 0“.Standardwert ist immer „alle bit 0“.

Zu jedem primitiven Datentyp gibt es einen „Wrapper Typ“ (Umschlag Zu jedem primitiven Datentyp gibt es einen „Wrapper Typ“ (Umschlag Typ). Mit dieser kann man Objekte von dem Typ mit Typ). Mit dieser kann man Objekte von dem Typ mit newnew erzeugen. erzeugen.

Page 6: DVG1 - 05 - Datenformate 1 Datenformate. 2 Speicherhierarchie Prozessor, Register, CPU sehr schnell, sehr teuer, sehr klein 1 ns, 1 $/Byte, 1kByte Hauptspeicher,

66 DVG1 - 05 - DatenformateDVG1 - 05 - Datenformate

booleanbooleanLogischer WahrheitswertLogischer Wahrheitswert

Ergebnis logischer AusdrückeErgebnis logischer Ausdrücke

mögliche Werte: mögliche Werte: false, truefalse, true

Standardwert: Standardwert: falsefalse

Wrapper Typ: Wrapper Typ: BooleanBoolean

boolean schalter = true;

schalter = false;

if (schalter) { .... }

else { .... }

schalter = !schalter;

schalter = (n > 5) & (i < 3);

Page 7: DVG1 - 05 - Datenformate 1 Datenformate. 2 Speicherhierarchie Prozessor, Register, CPU sehr schnell, sehr teuer, sehr klein 1 ns, 1 $/Byte, 1kByte Hauptspeicher,

77 DVG1 - 05 - DatenformateDVG1 - 05 - Datenformate

charcharEin Zeichen des UnicodesEin Zeichen des Unicodes

mögliche Werte: mögliche Werte: 0x0000 ... 0xFFFF0x0000 ... 0xFFFF. Konstanten, der Form . Konstanten, der Form '\'\uxxxx'uxxxx' werden als Unicode-Zeichen in Hexadezimaldarstellung werden als Unicode-Zeichen in Hexadezimaldarstellung interpretiert.interpretiert.

z.B.:z.B.:

'0' = 48 = '\u0030' = 0x0030'0' = 48 = '\u0030' = 0x0030

'A' = 65 = '\u0041' = 0x0041'A' = 65 = '\u0041' = 0x0041

'a' = 97 = '\u0061' = 0x0061'a' = 97 = '\u0061' = 0x0061

enthält die Zeichen vieler Sprachen, z.B. griechisch, kyrillisch, enthält die Zeichen vieler Sprachen, z.B. griechisch, kyrillisch, arabisch, chinesisch (?) ....arabisch, chinesisch (?) ....

Programmtexte können alle Unicode-Zeichen benutzen. Es kann Programmtexte können alle Unicode-Zeichen benutzen. Es kann z.B. eine Variable µ definiert werden.z.B. eine Variable µ definiert werden.

Standardwert: Standardwert: '\u0000''\u0000'

Wrapper Typ: Wrapper Typ: CharChar

charchar und und booleanboolean sind die einzigen vorzeichenfreien Datentypen. sind die einzigen vorzeichenfreien Datentypen.

Page 8: DVG1 - 05 - Datenformate 1 Datenformate. 2 Speicherhierarchie Prozessor, Register, CPU sehr schnell, sehr teuer, sehr klein 1 ns, 1 $/Byte, 1kByte Hauptspeicher,

88 DVG1 - 05 - DatenformateDVG1 - 05 - Datenformate

byte, short, int, longbyte, short, int, longVerschieden lange ganze ZahlenVerschieden lange ganze Zahlen

Länge: Länge: bytebyte 8 bit; 8 bit; shortshort 16 bit; 16 bit; intint 32 bit; 32 bit; longlong 64 bit 64 bit

mögliche Werte: alle ganzen Zahlen zwischen mögliche Werte: alle ganzen Zahlen zwischen

-2-2l-1l-1 und 2 und 2l-1l-1-1, l = Länge des Typs (8, 16, 32, 64)-1, l = Länge des Typs (8, 16, 32, 64)

interne Darstellung: im „zweier-Komplement“, d.h.interne Darstellung: im „zweier-Komplement“, d.h.

0x00 ... 0x7F entspricht den positiven Zahlen0x00 ... 0x7F entspricht den positiven Zahlen

0x80 ... 0xFF entspricht den negativen Zahlen, wert = wert - 2560x80 ... 0xFF entspricht den negativen Zahlen, wert = wert - 256

0x000x00 ... ... 0x7F0x7F 0x800x80 0x810x81 ...... 0xFF0xFF

00 ...... 127127 128128 129129 ...... 255255

00 ...... 127127 -128-128 -127-127 ...... -1-1

longlong-Konstanten enden mit „L“, z.B. 321L-Konstanten enden mit „L“, z.B. 321L

Alle anderen ganzzahligen Konstanten sind immer Alle anderen ganzzahligen Konstanten sind immer intint..

Standardwert: 0Standardwert: 0

Wrapper Typen: Wrapper Typen: ByteByte, , ShortShort, , IntegerInteger, , LongLong

Page 9: DVG1 - 05 - Datenformate 1 Datenformate. 2 Speicherhierarchie Prozessor, Register, CPU sehr schnell, sehr teuer, sehr klein 1 ns, 1 $/Byte, 1kByte Hauptspeicher,

99 DVG1 - 05 - DatenformateDVG1 - 05 - Datenformate

float, doublefloat, doubleGleitkommazahlen, werden im IEEE 754 Format gespeichertGleitkommazahlen, werden im IEEE 754 Format gespeichert

Länge: Länge: floatfloat 32 bit; 32 bit; doubledouble 64 bit 64 bit

1.4 101.4 10-45-45 < | < |floatfloat| < 3.4 10| < 3.4 10+38+38

4.9 104.9 10-324-324 < | < |doubledouble| < 1.7 10| < 1.7 10+308+308

zusätzlich +0, -0, +unendlich, -unendlich, keineZahl (NaN)zusätzlich +0, -0, +unendlich, -unendlich, keineZahl (NaN)

alle Operationen sind zulässig und liefern definierte Resultatealle Operationen sind zulässig und liefern definierte Resultate

z.B:z.B:

1/+0 = +unendlich1/+0 = +unendlich

1/-0 = -unendlich1/-0 = -unendlich

+0/+0 = NaN+0/+0 = NaN

floatfloat-Konstanten enden mit „f“, z.B. -1.234e23f-Konstanten enden mit „f“, z.B. -1.234e23f

doubledouble-Konstanten enden mit „d“, z.B. 1.234567e-243d-Konstanten enden mit „d“, z.B. 1.234567e-243d

Standardwert: 0.0f , 0.0dStandardwert: 0.0f , 0.0d

Wrapper Typ: Wrapper Typ: FloatFloat, , DoubleDouble

Page 10: DVG1 - 05 - Datenformate 1 Datenformate. 2 Speicherhierarchie Prozessor, Register, CPU sehr schnell, sehr teuer, sehr klein 1 ns, 1 $/Byte, 1kByte Hauptspeicher,

1010 DVG1 - 05 - DatenformateDVG1 - 05 - Datenformate

voidvoid

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

Wrapper Typ: VoidWrapper Typ: Void

Page 11: DVG1 - 05 - Datenformate 1 Datenformate. 2 Speicherhierarchie Prozessor, Register, CPU sehr schnell, sehr teuer, sehr klein 1 ns, 1 $/Byte, 1kByte Hauptspeicher,

1111 DVG1 - 05 - DatenformateDVG1 - 05 - Datenformate

ZusammenfassungZusammenfassung

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 - Datenformate 1 Datenformate. 2 Speicherhierarchie Prozessor, Register, CPU sehr schnell, sehr teuer, sehr klein 1 ns, 1 $/Byte, 1kByte Hauptspeicher,

1212 DVG1 - 05 - DatenformateDVG1 - 05 - Datenformate

Gemeinsame Eigenschaften der primitiven Datentypen:Gemeinsame Eigenschaften der primitiven Datentypen:

belegen einen feste Speichermenge,belegen einen feste Speichermenge,

1bit (boolean)1bit (boolean)

1 Byte (byte)1 Byte (byte)

2 Byte (char, short)2 Byte (char, short)

4 Byte (int, float)4 Byte (int, float)

8 Byte (long, double)8 Byte (long, double)

Variable von primitiven Typen werden direkt im Speicher Variable von primitiven Typen werden direkt im Speicher angelegtangelegt

z.B. bewirkt die Anweisungz.B. bewirkt die Anweisung

double x = 1.0d;double x = 1.0d;

die Reservierung von 8Byte Speicher unddie Reservierung von 8Byte Speicher und

die Initialisierung mit dem Wert 1.0ddie Initialisierung mit dem Wert 1.0d

Page 13: DVG1 - 05 - Datenformate 1 Datenformate. 2 Speicherhierarchie Prozessor, Register, CPU sehr schnell, sehr teuer, sehr klein 1 ns, 1 $/Byte, 1kByte Hauptspeicher,

1313 DVG1 - 05 - DatenformateDVG1 - 05 - Datenformate

BezeichnerBezeichnerbestehen aus bestehen aus Buchstaben (a-z, A-Z, Unicode)Buchstaben (a-z, A-Z, Unicode) Ziffern (0-9)Ziffern (0-9) Sonderzeichen (´_´ und ´$´)Sonderzeichen (´_´ und ´$´)

beginnen nie mit einer Zifferbeginnen nie mit einer Ziffer

z.B.:z.B.: zulässig sindzulässig sind

abcd123abcd123

xy$05xy$05

märz_23märz_23 nicht zulässig sindnicht zulässig sind

123xy123xy

märz-23märz-23

Page 14: DVG1 - 05 - Datenformate 1 Datenformate. 2 Speicherhierarchie Prozessor, Register, CPU sehr schnell, sehr teuer, sehr klein 1 ns, 1 $/Byte, 1kByte Hauptspeicher,

1414 DVG1 - 05 - DatenformateDVG1 - 05 - Datenformate

Gültigkeit von BezeichnernGültigkeit von BezeichnernVariable bekommen in der Anweisung Speicherplatz zugewiesen, in der Variable bekommen in der Anweisung Speicherplatz zugewiesen, in der sie vereinbart werden.sie vereinbart werden.

Der Platz den Variable belegen wird am Ende des Blockes freigegeben, Der Platz den Variable belegen wird am Ende des Blockes freigegeben, in dem sie vereinbart wurden.in dem sie vereinbart wurden.

Z.B.:Z.B.:

float f (float x)float f (float x)

{{

int i=3;int i=3;

i=i+1;i=i+1;

float x0 = 0;float x0 = 0;

x=x+x0;x=x+x0;

return Math.abs(x);return Math.abs(x);

}}

ii ist in dem ganzen Block bekannt, ist in dem ganzen Block bekannt, x0x0 nur in der zweiten Hälfte nur in der zweiten Hälfte

Page 15: DVG1 - 05 - Datenformate 1 Datenformate. 2 Speicherhierarchie Prozessor, Register, CPU sehr schnell, sehr teuer, sehr klein 1 ns, 1 $/Byte, 1kByte Hauptspeicher,

1515 DVG1 - 05 - DatenformateDVG1 - 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

Page 16: DVG1 - 05 - Datenformate 1 Datenformate. 2 Speicherhierarchie Prozessor, Register, CPU sehr schnell, sehr teuer, sehr klein 1 ns, 1 $/Byte, 1kByte Hauptspeicher,

1616 DVG1 - 05 - DatenformateDVG1 - 05 - Datenformate

LiteraleLiteraleFestkommaliteralFestkommaliteral

enthält nur Ziffern und < 2enthält nur Ziffern und < 231 31 ==> int z.B. 12345==> int z.B. 12345 enthält nur Ziffern und >=2enthält nur Ziffern und >=23131 oder endet mit l oder L ==> long z.B. oder endet mit l oder L ==> long z.B.

12345L12345L beginnt mit 0x oder 0X ==> hexadezimale Darstellungbeginnt mit 0x oder 0X ==> hexadezimale Darstellung beginnt mit 0 ==> oktale Darstellungbeginnt mit 0 ==> oktale Darstellung

GleitkommaliteralGleitkommaliteral enthält Ziffern, einen ´.´ oder ein ´e´ oder ´E´, endet nicht mit ´f´ oder enthält Ziffern, einen ´.´ oder ein ´e´ oder ´E´, endet nicht mit ´f´ oder

´F´ ==> double´F´ ==> double

z.B.: 3.14159, 3.3333e-1, 2345E22z.B.: 3.14159, 3.3333e-1, 2345E22 wenn ein ´f´ oder ´F´ angehängt wird ==> floatwenn ein ´f´ oder ´F´ angehängt wird ==> float

z.B.: 3.14159f, 3.3333e-1F, 2345E22fz.B.: 3.14159f, 3.3333e-1F, 2345E22f

logisches Literallogisches Literal true und falsetrue und false

Page 17: DVG1 - 05 - Datenformate 1 Datenformate. 2 Speicherhierarchie Prozessor, Register, CPU sehr schnell, sehr teuer, sehr klein 1 ns, 1 $/Byte, 1kByte Hauptspeicher,

1717 DVG1 - 05 - DatenformateDVG1 - 05 - Datenformate

Alphanumerische LiteraleAlphanumerische Literale ein Zeichen in Hochkomma eingeschlossenein Zeichen in Hochkomma eingeschlossen Unicodezeichen mit Unicodezeichen mit

\ddd (octal), führende Nullen können entfallen\ddd (octal), führende Nullen können entfallen

\udddd (hexadezimal)\udddd (hexadezimal)

z.B: ´A´ = ´\101´ = ´\u0041´ ; ´ ´ = ´\40´ = ´\u0020´z.B: ´A´ = ´\101´ = ´\u0041´ ; ´ ´ = ´\40´ = ´\u0020´ besondere Zeichenbesondere 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 - Datenformate 1 Datenformate. 2 Speicherhierarchie Prozessor, Register, CPU sehr schnell, sehr teuer, sehr klein 1 ns, 1 $/Byte, 1kByte Hauptspeicher,

1818 DVG1 - 05 - DatenformateDVG1 - 05 - Datenformate

ZeichenkettenliteralZeichenkettenliteral Beliebige Folge von Zeichen, die in Beliebige Folge von Zeichen, die in

Anführungszeichen eingeschlossen sind.Anführungszeichen eingeschlossen sind.

Z.B.:Z.B.:

"Hello, World!""Hello, World!"

"\u0048\u0065\u006C\u006c\u006f\u002c\"\u0048\u0065\u006C\u006c\u006f\u002c\u0020\u0057\u006f\u0072\u006C\u0064\u0020\u0057\u006f\u0072\u006C\u0064\u0021"u0021"

"\"\110\145\154\154\157\54\40\127\157\162\15110\145\154\154\157\54\40\127\157\162\154\144\41"4\144\41"

Page 19: DVG1 - 05 - Datenformate 1 Datenformate. 2 Speicherhierarchie Prozessor, Register, CPU sehr schnell, sehr teuer, sehr klein 1 ns, 1 $/Byte, 1kByte Hauptspeicher,

1919 DVG1 - 05 - DatenformateDVG1 - 05 - Datenformate

TypumwandlungenTypumwandlungenImplizit immer in „größere“ Typen, d.h Implizit immer in „größere“ Typen, d.h

byte ==> intbyte ==> int char ==> intchar ==> int short ==> intshort ==> int int ==> longint ==> long float ==> doublefloat ==> double byte, char, short, int, long ==> float, doublebyte, char, short, int, long ==> float, doublebytebyte und und shortshort werden vor der Verarbeitung werden vor der Verarbeitung immer immer nach nach intint konvertiertkonvertiertExplizite Umwandlung durch „casting“ : Explizite Umwandlung durch „casting“ : (typ)ausdruck(typ)ausdruck

z.B.:z.B.:short s;short s;byte b = (byte)s;byte b = (byte)s; Umwandlung kann mit Informationsverlusten verbunden sein!Umwandlung kann mit Informationsverlusten verbunden sein!

Page 20: DVG1 - 05 - Datenformate 1 Datenformate. 2 Speicherhierarchie Prozessor, Register, CPU sehr schnell, sehr teuer, sehr klein 1 ns, 1 $/Byte, 1kByte Hauptspeicher,

2020 DVG1 - 05 - DatenformateDVG1 - 05 - Datenformate

Operationen mit FestkommazahlenOperationen mit FestkommazahlenUnäre OperatorenUnäre Operatoren Negation „-“Negation „-“ Bit-Komplement „~“Bit-Komplement „~“

bitweises ersetzen der 0 durch 1 und umgekehrt bitweises ersetzen der 0 durch 1 und umgekehrt Inkrement „++“Inkrement „++“

j = ++i <==> i=i+1; j=i; (Präinkrement)j = ++i <==> i=i+1; j=i; (Präinkrement)

j = i++ <==> j=i; i=i+1; (Postinkrement)j = i++ <==> j=i; i=i+1; (Postinkrement) Dekrement „--“Dekrement „--“

j = --i <==> i=i-1; j=i; (Prädekrement)j = --i <==> i=i-1; j=i; (Prädekrement)

j = i-- <==> j=i; i=i-1; (Postdekrement)j = i-- <==> j=i; i=i-1; (Postdekrement)

Page 21: DVG1 - 05 - Datenformate 1 Datenformate. 2 Speicherhierarchie Prozessor, Register, CPU sehr schnell, sehr teuer, sehr klein 1 ns, 1 $/Byte, 1kByte Hauptspeicher,

2121 DVG1 - 05 - DatenformateDVG1 - 05 - Datenformate

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 - Datenformate 1 Datenformate. 2 Speicherhierarchie Prozessor, Register, CPU sehr schnell, sehr teuer, sehr klein 1 ns, 1 $/Byte, 1kByte Hauptspeicher,

2222 DVG1 - 05 - DatenformateDVG1 - 05 - Datenformate

Binäre OperatorenBinäre Operatoren Addition „+“Addition „+“ Subtraktion „-“Subtraktion „-“ Multiplikation „*“Multiplikation „*“ Division „/“ mit Rundung zur NullDivision „/“ mit Rundung zur Null Modulo „%“Modulo „%“

a%b = a - (a/b)*ba%b = a - (a/b)*b bitweise Verschiebung nach links „<<“bitweise Verschiebung nach links „<<“

a << b, die Binärdarstellung von a wird um (b%L) Stellen nach 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 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)von a (byte 8, char und short 16, int 32, long 64)

bitweise Verschiebung nach rechts unter bitweise Verschiebung nach rechts unter Berücksichtigung des Vorzeichens „>>“Berücksichtigung des Vorzeichens „>>“

a >> b, die Binärdarstellung von a wird um (b%L) Stellen nach a >> b, die Binärdarstellung von a wird um (b%L) Stellen nach rechts verschoben, dabei wird von links mit dem ersten bit rechts verschoben, dabei wird von links mit dem ersten bit aufgefülltaufgefüllt

Page 23: DVG1 - 05 - Datenformate 1 Datenformate. 2 Speicherhierarchie Prozessor, Register, CPU sehr schnell, sehr teuer, sehr klein 1 ns, 1 $/Byte, 1kByte Hauptspeicher,

2323 DVG1 - 05 - DatenformateDVG1 - 05 - Datenformate

bitweise Verschiebung nach rechts ohne Berücksichtigung bitweise Verschiebung nach rechts ohne Berücksichtigung des Vorzeichens „>>>“des Vorzeichens „>>>“

a >>> b, die Binärdarstellung von a wird um (b%L) Stellen nach a >>> b, die Binärdarstellung von a wird um (b%L) Stellen nach rechts verschoben, dabei wird von links mit „0“ aufgefülltrechts verschoben, dabei wird von links mit „0“ aufgefüllt

logische Operatorenlogische Operatorenbitweises logisches „und“ : „&“bitweises logisches „und“ : „&“

bitweises logisches „oder“ : „|“bitweises logisches „oder“ : „|“

bitweises logisches „exklusives oder“ : „^“ bitweises logisches „exklusives oder“ : „^“ Vergleichoperatoren „>“, „<“, „>=“, „<=“, „==“, „!=“Vergleichoperatoren „>“, „<“, „>=“, „<=“, „==“, „!=“

ergeben ergeben immerimmer boolsche Werte boolsche Werte

Page 24: DVG1 - 05 - Datenformate 1 Datenformate. 2 Speicherhierarchie Prozessor, Register, CPU sehr schnell, sehr teuer, sehr klein 1 ns, 1 $/Byte, 1kByte Hauptspeicher,

2424 DVG1 - 05 - DatenformateDVG1 - 05 - Datenformate

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 - Datenformate 1 Datenformate. 2 Speicherhierarchie Prozessor, Register, CPU sehr schnell, sehr teuer, sehr klein 1 ns, 1 $/Byte, 1kByte Hauptspeicher,

2525 DVG1 - 05 - DatenformateDVG1 - 05 - Datenformate

Ternärer Operator „?:“Ternärer Operator „?:“ boolausdr ? ausdruck1 : ausdruck2 ;boolausdr ? ausdruck1 : ausdruck2 ;

boolausdr == true ==> ausdruck1boolausdr == true ==> ausdruck1

boolausdr == false ==> ausdruck2boolausdr == false ==> ausdruck2

ZuweisungsoperatorenZuweisungsoperatoren Zuweisung „=“Zuweisung „=“ kombinierte Zuweisung „op=“ , wobei op ein beliebiger kombinierte Zuweisung „op=“ , wobei op ein beliebiger

binärer Operator ist. i op= j ist äquivalent zu i = i op j. z.B.:binärer Operator ist. i op= j ist äquivalent zu i = i op j. z.B.:i += 1 <==> i = i+1 <==> i++i += 1 <==> i = i+1 <==> i++

i <<= 4 <==> i = i << 4i <<= 4 <==> i = i << 4 Zuweisungsoperatoren besitzen den Wert, der Zuweisungsoperatoren besitzen den Wert, der

zugewiesen wird. Daher können sie in Ausdrücken zugewiesen wird. Daher können sie in Ausdrücken wiederverwendet werden. Z.B.:wiederverwendet werden. Z.B.:

i = 1 + (j=3*5) *7; ==> j=15; i=106;i = 1 + (j=3*5) *7; ==> j=15; i=106;

i = (j = 999); ==> j=999; i=999;i = (j = 999); ==> j=999; i=999;

Page 26: DVG1 - 05 - Datenformate 1 Datenformate. 2 Speicherhierarchie Prozessor, Register, CPU sehr schnell, sehr teuer, sehr klein 1 ns, 1 $/Byte, 1kByte Hauptspeicher,

2626 DVG1 - 05 - DatenformateDVG1 - 05 - Datenformate

Operationen mit GleitkommazahlenOperationen mit Gleitkommazahlen

Folgende Operatoren arbeiten bei Folgende Operatoren arbeiten bei Gleitkommazahlen analog zu Gleitkommazahlen analog zu Festkommazahlen:Festkommazahlen: Unäre Operatoren : „-“, „++“, „--“Unäre Operatoren : „-“, „++“, „--“ Binäre Operatoren : „+“, „-“, „*“, „/“, „%“, „>“, „<“, Binäre Operatoren : „+“, „-“, „*“, „/“, „%“, „>“, „<“,

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

Page 27: DVG1 - 05 - Datenformate 1 Datenformate. 2 Speicherhierarchie Prozessor, Register, CPU sehr schnell, sehr teuer, sehr klein 1 ns, 1 $/Byte, 1kByte Hauptspeicher,

2727 DVG1 - 05 - DatenformateDVG1 - 05 - Datenformate

Operationen mit ZeichenkettenOperationen mit Zeichenketten

Verkettung „+“Verkettung „+“ string1 + string2 ergibt die Zeichenkette, die aus string1 + string2 ergibt die Zeichenkette, die aus

Aneinanderhängen der Zeichenketten string1 und Aneinanderhängen der Zeichenketten string1 und string2 entsteht. Z.B.:string2 entsteht. Z.B.:

““Hallo, “ + “World!“ ergibt “Hallo, World!“Hallo, “ + “World!“ ergibt “Hallo, World!“

Page 28: DVG1 - 05 - Datenformate 1 Datenformate. 2 Speicherhierarchie Prozessor, Register, CPU sehr schnell, sehr teuer, sehr klein 1 ns, 1 $/Byte, 1kByte Hauptspeicher,

2828 DVG1 - 05 - DatenformateDVG1 - 05 - Datenformate

Operationen mit boolschen WertenOperationen mit boolschen WertenNegation "!"Negation "!"

Operatoren mit unverkürzter AuswertungOperatoren mit unverkürzter Auswertung und „&“, oder „|“, exklusives oder „^“und „&“, oder „|“, exklusives oder „^“ Die Ausdrücke werden ausgewertet auch wenn das Die Ausdrücke werden ausgewertet auch wenn das

Ergebnis schon sicher ist. Z.BErgebnis schon sicher ist. Z.Bb=(i > j) | f(j) ; Wenn i>j ist, müsste f(j) nicht aufgerufen werden b=(i > j) | f(j) ; Wenn i>j ist, müsste f(j) nicht aufgerufen werden um b zu bestimmen. Wird aber doch aufgerufen.um b zu bestimmen. Wird aber doch aufgerufen.

Operatoren mit verkürzter AuswertungOperatoren mit verkürzter Auswertung und „&&“, oder „||“und „&&“, oder „||“ Die Ausdrücke werden nur soweit ausgewertet, bis das Die Ausdrücke werden nur soweit ausgewertet, bis das

Ergebnis des Ausdruckes bekannt ist.Ergebnis des Ausdruckes bekannt ist.

Page 29: DVG1 - 05 - Datenformate 1 Datenformate. 2 Speicherhierarchie Prozessor, Register, CPU sehr schnell, sehr teuer, sehr klein 1 ns, 1 $/Byte, 1kByte Hauptspeicher,

2929 DVG1 - 05 - DatenformateDVG1 - 05 - Datenformate

Reihenfolge von OperatorenReihenfolge von Operatoren15 . [] ()

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.