Rheinwerk Computing < openbook > Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

 
Inhaltsverzeichnis
Vorwort
1 Java ist auch eine Sprache
2 Imperative Sprachkonzepte
3 Klassen und Objekte
4 Der Umgang mit Zeichenketten
5 Eigene Klassen schreiben
6 Objektorientierte Beziehungsfragen
7 Ausnahmen müssen sein
8 Äußere.innere Klassen
9 Besondere Typen der Java SE
10 Generics<T>
11 Lambda-Ausdrücke und funktionale Programmierung
12 Architektur, Design und angewandte Objektorientierung
13 Komponenten, JavaBeans und Module
14 Die Klassenbibliothek
15 Einführung in die nebenläufige Programmierung
16 Einführung in Datenstrukturen und Algorithmen
17 Einführung in grafische Oberflächen
18 Einführung in Dateien und Datenströme
19 Einführung ins Datenbankmanagement mit JDBC
20 Einführung in <XML>
21 Testen mit JUnit
22 Bits und Bytes und Mathematisches
23 Die Werkzeuge des JDK
A Java SE-Paketübersicht
Stichwortverzeichnis


Download:

- Beispielprogramme, ca. 35,4 MB


Buch bestellen
Ihre Meinung?



Spacer
<< zurück
Java ist auch eine Insel von Christian Ullenboom

Einführung, Ausbildung, Praxis
Buch: Java ist auch eine Insel


Java ist auch eine Insel

Pfeil 22 Bits und Bytes und Mathematisches
Pfeil 22.1 Bits und Bytes *
Pfeil 22.1.1 Die Bit-Operatoren Komplement, Und, Oder und XOR
Pfeil 22.1.2 Repräsentation ganzer Zahlen in Java – das Zweierkomplement
Pfeil 22.1.3 Das binäre (Basis 2), oktale (Basis 8), hexadezimale (Basis 16) Stellenwertsystem
Pfeil 22.1.4 Auswirkung der Typumwandlung auf die Bit-Muster
Pfeil 22.1.5 Vorzeichenlos arbeiten
Pfeil 22.1.6 Die Verschiebeoperatoren
Pfeil 22.1.7 Ein Bit setzen, löschen, umdrehen und testen
Pfeil 22.1.8 Bit-Methoden der Integer- und Long-Klasse
Pfeil 22.2 Fließkomma-Arithmetik in Java
Pfeil 22.2.1 Spezialwerte für Unendlich, Null, NaN
Pfeil 22.2.2 Standardnotation und wissenschaftliche Notation bei Fließkommazahlen *
Pfeil 22.2.3 Mantisse und Exponent *
Pfeil 22.3 Die Eigenschaften der Klasse Math
Pfeil 22.3.1 Attribute
Pfeil 22.3.2 Absolutwerte und Vorzeichen
Pfeil 22.3.3 Maximum/Minimum
Pfeil 22.3.4 Runden von Werten
Pfeil 22.3.5 Rest der ganzzahligen Division *
Pfeil 22.3.6 Division mit Rundung Richtung negativ unendlich, alternativer Restwert *
Pfeil 22.3.7 Wurzel- und Exponentialmethoden
Pfeil 22.3.8 Der Logarithmus *
Pfeil 22.3.9 Winkelmethoden *
Pfeil 22.3.10 Zufallszahlen
Pfeil 22.4 Genauigkeit, Wertebereich eines Typs und Überlaufkontrolle *
Pfeil 22.4.1 Der größte und der kleinste Wert
Pfeil 22.4.2 Überlauf
Pfeil 22.4.3 Was bitte macht eine ulp?
Pfeil 22.5 Zufallszahlen: Random, SecureRandom, SplittableRandom
Pfeil 22.5.1 Die Klasse Random
Pfeil 22.5.2 Random-Objekte mit dem Samen aufbauen
Pfeil 22.5.3 Einzelne Zufallszahlen erzeugen
Pfeil 22.5.4 Pseudo-Zufallszahlen in der Normalverteilung *
Pfeil 22.5.5 Strom von Zufallszahlen generieren *
Pfeil 22.5.6 Die Klasse SecureRandom *
Pfeil 22.5.7 SplittableRandom *
Pfeil 22.6 Große Zahlen *
Pfeil 22.6.1 Die Klasse BigInteger
Pfeil 22.6.2 Beispiel: ganz lange Fakultäten mit BigInteger
Pfeil 22.6.3 Große Fließkommazahlen mit BigDecimal
Pfeil 22.6.4 Mit MathContext komfortabel die Rechengenauigkeit setzen
Pfeil 22.7 Mathe bitte strikt *
Pfeil 22.7.1 Strikte Fließkommaberechnungen mit strictfp
Pfeil 22.7.2 Die Klassen Math und StrictMath
Pfeil 22.8 Zum Weiterlesen
 

Zum Seitenanfang

22.7Mathe bitte strikt * Zur vorigen ÜberschriftZur nächsten Überschrift

Bei der Berechnung mit Fließkommazahlen schreibt die Definition des IEEE-754-Standards vor, wie numerische Berechnungen durchgeführt werden. Damit soll die CPU/FPU für float und double mit 32 bzw. 64 Bit rechnen. In Wirklichkeit rechnet jedoch so gut wie kein mathematischer Prozessor mit diesen Größen, außer vielleicht AMD mit der 3Dnow!-Technologie. Auf der PC-Seite kommen Intel und AMD mit internen Rechengenauigkeiten von 80 Bit, also 10 Byte, zum Zuge.[ 267 ](Dieses Dilemma betrifft aber nur 80x86- und andere CISC-Prozessoren. Bei RISC sind 32 Bit und 64 Bit das Übliche. ) Die 80-Bit-Lösung bringt in Java zwei Nachteile mit sich:

  • Diese Genauigkeit kann Java bisher nicht nutzen.

  • Wegen der starren IEEE-754-Spezifikation kann der Prozessor weniger Optimierungen durchführen, weil er sich immer eng an die Norm halten muss. Das kostet Zeit. Gegebenenfalls können aber die mathematischen Ergebnisse auf unterschiedlichen Maschinen anders aussehen.

 

Zum Seitenanfang

22.7.1Strikte Fließkommaberechnungen mit strictfp Zur vorigen ÜberschriftZur nächsten Überschrift

Damit zum einen die Vorgaben der IEEE-Norm erfüllt werden und zum anderen die Geschwindigkeit gewährleistet werden kann, lässt sich der Modifizierer strictfp einsetzen – so geht die JVM bei Operationen strikt nach der IEEE-Norm vor. Wir nennen das FP-strikt. Ohne strictfp (wie es also für die meisten unserer Programme der Fall ist) nimmt die JVM eine interne Optimierung vor. Nach außen bleiben die Datentypen 32 Bit und 64 Bit lang, das heißt: Bei den Konstanten in double und float ändert sich nichts. Zwischenergebnisse bei Fließkommaberechnungen werden aber eventuell mit größerer Genauigkeit berechnet.

Der Modifizierer strictfp lässt sich an unterschiedlichen Stellen einsetzen: an Klassen, Schnittstellen oder Methoden, aber nicht an einzelnen Variablen. Ist ein Typ oder eine Methode strictfp, dann ist alles innerhalb des Typs oder der Methode FP-strikt.

 

Zum Seitenanfang

22.7.2Die Klassen Math und StrictMath Zur vorigen ÜberschriftZur nächsten Überschrift

Für strikte mathematische Operationen gibt es eine eigene Klasse StrictMath. An der Klassendeklaration für StrictMath lässt sich ablesen, dass sich alle Methoden an die IEEE-Norm halten.

Listing 22.15java.lang.StrictMath.java, StrictMath

public final strictfp class StrictMath {

// ...

}

Allerdings gibt es nicht zwei Implementierungen der mathematischen Methoden – einmal strikt und genau bzw. einmal nicht strikt, dafür potenziell schneller. Bisher delegiert die Implementierung für Math direkt an StrictMath:

Listing 22.16java.lang.Math.java, Ausschnitt

public final strictfp class Math {



public static double tan( double a ) {

return StrictMath.tan( a );

// default impl. delegates to StrictMath

}



}

Die Konsequenz ist, dass alle Methoden wie Math.pow(double, double) strikt nach IEEE-Norm rechnen. Das ist zwar aus Sicht der Präzision und Übertragbarkeit der Ergebnisse wünschenswert, aber die Performance ist nicht optimal.

 


Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.

>> Zum Feedback-Formular
<< zurück
 Zum Katalog
Zum Katalog: Java ist auch eine Insel Java ist auch eine Insel

Jetzt bestellen


 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?

Ihre Meinung



 Buchempfehlungen
Zum Katalog: Java ist auch eine Insel

Java ist auch eine Insel




Zum Katalog: Java SE 9-Standard-Bibliothek

Java SE 9-Standard-Bibliothek




Zum Katalog: Professionell entwickeln mit Java EE 8

Professionell entwickeln mit Java EE 8




Zum Katalog: Entwurfsmuster

Entwurfsmuster




Zum Katalog: IT-Projektmanagement

IT-Projektmanagement




 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich

InfoInfo



 

 


Copyright © Rheinwerk Verlag GmbH 2017

Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.

 

[Rheinwerk Computing]



Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de