Erste Schritte Gibt es setMantisse?

juergenkulow

Mitglied
Hallo Java-forum,
Wie kann man in Java die Mantisse einer double Variablen ohne JNI bzw. loadLibrary ändern?
Java:
// Erhöhe Mantisse einer double Varibalen um 1
public class Mixqd {
    public static native long RetI64(double d);
    public static native double RetD64(long l);
    public static native long RDTSC();
    
    public static void main(String[] args) {
        long l, vorzeichen, exponent, mantisse;
        double d=0.025, dneu;
        System.loadLibrary("Mixqd");
        System.out.println(RetI64(0.025));
        System.out.println(RetD64(4582862980812216730L));
        System.out.println(RetD64(0x3F9999999999999AL));
        l=RetI64(d);
        vorzeichen=(l&0x8000000000000000L)>>63;
        exponent=  (l&0x7FF0000000000000L)>>52;
        mantisse=      l&0xFFFFFFFFFFFFFL;
        System.out.printf("Vorzeichen(1 Bit): %d Exponent(11 Bit): %d Mantisse(52 Bit) %d\n",vorzeichen,exponent,mantisse);
        System.out.println(Math.getExponent(d) );
        mantisse++;
        System.out.println((vorzeichen<<63)+(exponent<<52)+mantisse);
        dneu=RetD64((vorzeichen<<63)+(exponent<<52)+mantisse);
        System.out.println(dneu);
        System.out.printf("epsilon: %e\n",dneu-d);
        System.out.println(RDTSC());
        System.out.println(RDTSC());
        //System.out.println(Math.getMantisse(0.025) );
    }
}

/*
4582862980812216730
0.025
0.025
Vorzeichen(1 Bit): 0 Exponent(11 Bit): 1017 Mantisse(52 Bit) 2702159776422298
-6
4582862980812216731
0.025000000000000005
epsilon: 3,469447e-18
1396952647696054
1396952648316758
*/
Code für das Mixqd.DLL:
Code:
; PureBasic 5.71 LTS(x64) Windows
Structure Mixqd : StructureUnion : q.q : d.d : EndStructureUnion : EndStructure

XIncludeFile "d:\_neu\Java\PBJNI_1.0\src\JavaDLL\JNINativeInterface.pb"
; Dank an Sven alias Froggerprogger contact: kurras@schalldesign.de für JNINativeInterface.pb
; https://drive.google.com/uc?export=download&id=0BwDGv21nAMiVSFV0NldDcjhjejg
ProcedureDLL.q Java_Mixqd_RetI64(*env.JNINativeInterface, *obj.Long, d.d)
  myMixqd.Mixqd\d=d
  ProcedureReturn myMixqd\q
EndProcedure

ProcedureDLL.d Java_Mixqd_RetD64(*env.JNINativeInterface, *obj.Long, q.q)
  myMixqd.Mixqd\q=q
  ProcedureReturn myMixqd\d
EndProcedure

Structure DoppelLong : longax.l : longdx.l : EndStructure
Structure RDTSCTyp : StructureUnion : longel.DoppelLong : quadel.q : EndStructureUnion : EndStructure
ProcedureDLL.q Java_Mixqd_RDTSC(*env.JNINativeInterface, *obj.Long)
  Protected cpuZeit.RDTSCTyp
  Protected RegEax.l, RegEdx.l
  EnableASM : DisableDebugger
  RDTSC
  MOV RegEax,eax
  MOV RegEdx,edx
  cpuZeit\longel\longax=RegEax
  cpuZeit\longel\longdx=RegEdx
  ProcedureReturn cpuZeit\quadel
EndProcedure
 
X

Xyz1

Gast
Das könnte Dir ggf weiter helfen, aber frage mich bitte nicht ob ich das verstehe :D
Java:
public class MyD {
	double d = 0;

	void setSign(boolean a) {
		long l = Double.doubleToLongBits(d);
		if (a)
			l |= 1l << 63;
		else
			l &= ~(1l << 63);
		d = Double.longBitsToDouble(l);
	}

	void setExponent(long a) {
		long l = Double.doubleToLongBits(d);
		l &= ~(0b111_1111_1111 << 52);
		l |= a << 52;
		d = Double.longBitsToDouble(l);
	}

	void setFrac(long a) {
		long l = Double.doubleToLongBits(d);
		l &= ~(0xFFFFFFFFFFFFFL);
		l |= a;
		d = Double.longBitsToDouble(l);
	}

	public static void main(String[] args) {
		MyD m = new MyD();
		m.setSign(true);
		m.setExponent(0b10000000001);
		m.setFrac(3l << 50);
		System.out.println(m.d);
	}
}
 

Tarrew

Top Contributor
Java:
public class MyD {
   //...
}
NegroPensante10-1024x576.jpg


Sorry, musste sein :p
 
X

Xyz1

Gast
Stehe ich auf der Leitung oder was soll das Bild?


Ich verstehe es nicht, scheint nichts schlimmes zu bedeuten.

Jedenfalls, mit setFrac können die Mantisse bits gesetzt werden.

@temi Danke für den Link
 
Zuletzt bearbeitet von einem Moderator:

juergenkulow

Mitglied
Vielen Dank Tobias-nrw.
Java:
// Erhöhe Mantisse einer double Varibalen um 1
public class incMantisse {
    public static void main(String[] args) {
        long l, mantisse;
        double d=0.025, dneu;
        l=Double.doubleToLongBits(d);
        mantisse=l&0xFFFFFFFFFFFFFL;
        mantisse++;
        dneu=Double.longBitsToDouble((l&0xFFF0000000000000L)|mantisse);
        System.out.println(dneu);
    }
}
//0.025000000000000005
[
 
X

Xyz1

Gast
@juergenkulow Wenn man die/das Mantisse erhöht, kann man damit den "kleinsten nächstgrößeren möglichen" double Value herausfinden. Zum Gerätestiel beginnend bei 10.0:
Java:
public class MyD {
	double d = 0;

	void setSign(boolean a) {
		long l = Double.doubleToLongBits(d);
		if (a)
			l |= 1l << 63;
		else
			l &= ~(1l << 63);
		d = Double.longBitsToDouble(l);
	}

	void setExponent(long a) {
		long l = Double.doubleToLongBits(d);
		l &= ~(0b111_1111_1111 << 52);
		l |= a << 52;
		d = Double.longBitsToDouble(l);
	}

	void setFrac(long a) {
		long l = Double.doubleToLongBits(d);
		l &= ~(0xFFFFFFFFFFFFFL);
		l |= a;
		d = Double.longBitsToDouble(l);
	}

	public static void main(String[] args) {
		MyD m = new MyD();
		m.setSign(false);
		m.setExponent(0b10000000010); // 8.0

		for (int i = 0; i < 25; i++) {
			m.setFrac((1l << 50) + i);
			System.out.println(m.d);
		}
	}
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Umgebungsvariable java -cp gibt immer Java-Hilfe... Java Basics - Anfänger-Themen 3
P Gibt es einen anderen Weg um "{}" in IntelliJ zu schreiben? Java Basics - Anfänger-Themen 5
Shadowrunner Variablen Gibt es eine Möglichkeit die Ziffern/Stellen einer Zahl fest zu legen? Java Basics - Anfänger-Themen 3
T HashMap Lsite gibt die sachen nicht aus wie gewollt. Java Basics - Anfänger-Themen 3
L Methoden Eine Methode um zu testen ob es ein Nachbar gibt Java Basics - Anfänger-Themen 10
Z Java ArrayList speichert falsche Daten ab bzw. gibt falsche Daten aus? Java Basics - Anfänger-Themen 42
N Gibt es hierfür einen Shortcut Java Basics - Anfänger-Themen 5
U Warum gibt das eine Nullpointerexception? (Switch) Java Basics - Anfänger-Themen 6
K Warum gibt mir z. B. 40^128 eine Zahl? Ich dachte mit xor kann man nur booleanwerte erhalten, also prüfen ob etwas whar oder falsch ist? Java Basics - Anfänger-Themen 1
J Interpreter-Fehler Programm gibt nicht gewünschtes Ergebnis aus Java Basics - Anfänger-Themen 11
G Input/Output getText() gibt keinen Wert! Java Basics - Anfänger-Themen 13
Arita welche Fehler gibt es noch? wie kann ich es noch vervollständigen Java Basics - Anfänger-Themen 15
P Methode die ausgibt wie viele Primzahlen es zwischen 2 und n gibt Java Basics - Anfänger-Themen 10
P Welche Zeile in Tadople gibt einen compiler error? Java Basics - Anfänger-Themen 5
S Gibt es ein simples JWebbrowser Element? Java Basics - Anfänger-Themen 6
S Gibt es irgendeine Möglichkeit, dies zu tun?(Android Studio) Java Basics - Anfänger-Themen 1
S Gibt es sowas (JSpinner)? Java Basics - Anfänger-Themen 9
F If Abfrage gibt falsches Ergebnis.... Java Basics - Anfänger-Themen 6
J Vektoren Add gibt nicht das aus was es sollte Java Basics - Anfänger-Themen 3
S Gibt es einen guten kostenlosen Online-kurs Java Basics - Anfänger-Themen 2
D Warum gibt mir das Programm nicht den Array invertiert an ? Java Basics - Anfänger-Themen 1
B Prüfen, ob es schon einen Termin gibt in einem Zeitraum Java Basics - Anfänger-Themen 5
A Kfz - Händler Klasse. JUnit-Test gibt noch Fehler an, aber finde Ursache nicht Java Basics - Anfänger-Themen 7
S Gibt es für die Klasse HashMap Generic Implementierungen? Java Basics - Anfänger-Themen 11
S Gibt es eine Funktion, die gewissermaßen eine Reihe von instanceOf() vereinheitlicht? Java Basics - Anfänger-Themen 19
N Ausführung gibt keinen Fehler an, Return wird aber nicht ausgegeben Java Basics - Anfänger-Themen 22
L Methoden Rekursion gibt alten Wert wieder Java Basics - Anfänger-Themen 37
Aprendiendo Gibt es in der JAVA-API eine Funktion, die eine Dezimalzahl in eine binäre Zahl umwandelt? Java Basics - Anfänger-Themen 8
E Gibt es in Java Properties (wie in C#) Java Basics - Anfänger-Themen 6
R Gibt es Eine einfache Programierung dieser Methoden Java Basics - Anfänger-Themen 8
B BufferedReader gibt Datei-Inhalt doppelt aus Java Basics - Anfänger-Themen 3
B Wieso gibt er hier nur die ungeraden Zahlen aus? Java Basics - Anfänger-Themen 5
B Wieso gibt das Programm in der Console kein Ergebnis aus? Java Basics - Anfänger-Themen 2
D Funktion gibt Dimension zurück Java Basics - Anfänger-Themen 11
JavaNewbie2.0 Gibt meiner Meinung etwas falsches aus. Java Basics - Anfänger-Themen 7
S Ausgabe gibt nur Arrayadresse aus... Java Basics - Anfänger-Themen 4
F Scanner - nextLine() gibt leeren String zurück Java Basics - Anfänger-Themen 2
Tommy Nightmare void Methode gibt Array zurück Java Basics - Anfänger-Themen 3
N Kalender - Tag addieren gibt 31. Juni zurück Java Basics - Anfänger-Themen 3
G Gibt es eine Methode die bei einem StringBuilder n mal das Zeichen c hinzufügt? Java Basics - Anfänger-Themen 6
G Taschenrechner gibt nur 0.0 aus Java Basics - Anfänger-Themen 8
OlafHD Gibt es einen Laufbalken? Java Basics - Anfänger-Themen 2
P Listen sortieren mit Binärbaum gibt keine Ausgabe ab 10000 Integern Java Basics - Anfänger-Themen 14
G Input/Output InputStream gibt nicht die Korrekten Werte aus Java Basics - Anfänger-Themen 10
W IllegalArgumentException gibt nichts aus Java Basics - Anfänger-Themen 2
K Programm gibt nichts aus? Java Basics - Anfänger-Themen 2
M Erste Schritte Wie speichert und gibt man Arrays aus? (JLabel) Java Basics - Anfänger-Themen 12
B gibt es ein Stundenplan-Algorithmus? Java Basics - Anfänger-Themen 11
G Konsole gibt "alte" sachen aus Java Basics - Anfänger-Themen 3
J while(nst == 0) gibt Fehlermeldung Java Basics - Anfänger-Themen 4
W Input/Output DataOutputStream gibt NULL zurück Java Basics - Anfänger-Themen 5
O Methode gibt Null zurück Java Basics - Anfänger-Themen 7
F Java-Programm gibt in Eingabeaufforderung nichts aus Java Basics - Anfänger-Themen 4
T Konsole gibt nicht das Gewünschte aus Java Basics - Anfänger-Themen 5
T Input/Output GregorianCalender gibt falsch aus? Java Basics - Anfänger-Themen 4
C OOP Erstellen eigener Objekte die es schon gibt "schlau"? Java Basics - Anfänger-Themen 3
I beim auslesen der Properties gibt es ein Fehler Java Basics - Anfänger-Themen 7
C Input/Output System.in.read() gibt nicht -1 zurück? Java Basics - Anfänger-Themen 3
T String gibFarbe() - gibt nix?! Java Basics - Anfänger-Themen 13
L Gibt es etwas wie "HashMap <String, String, String> Java Basics - Anfänger-Themen 9
B JRadioButton wechsel gibt NullPointerException Java Basics - Anfänger-Themen 2
P Temperatur Umrechner gibt nur ein Ergebnis aus Java Basics - Anfänger-Themen 2
S Class File Editor gibt beim Start der Programms die Fehlermeldung Source not found aus Java Basics - Anfänger-Themen 1
D Methode die statt char[] ein "null" zurück gibt Java Basics - Anfänger-Themen 8
M Input/Output File.listFiles() gibt null zurück Java Basics - Anfänger-Themen 3
C Welches Format gibt Java aus? Java Basics - Anfänger-Themen 5
S Methoden void-Methode: Wieso gibt es eine Rückgabe? Java Basics - Anfänger-Themen 5
S Textdatei lesen, Methode gibt nur die letzte Zeile aus. Warum? Java Basics - Anfänger-Themen 5
W return-Anweisung gibt nichts aus Java Basics - Anfänger-Themen 5
M toString gibt "null" statt "0.0" aus Java Basics - Anfänger-Themen 5
P 2D Array auslesen gibt nur letzten Wert aus Java Basics - Anfänger-Themen 11
O Funktioniert dies? Und gibt es eine bessere Lösung? Java Basics - Anfänger-Themen 6
T Methoden methode gibt array bound exeption Java Basics - Anfänger-Themen 8
B Input/Output File.length() gibt bei vielen Ordnern 0 zurück Java Basics - Anfänger-Themen 9
G Erste Schritte Über verschiedene Datentypen iterieren. Gibt es sowas? Java Basics - Anfänger-Themen 19
Xendarii Quicksort gibt kein Ergebnis aus Java Basics - Anfänger-Themen 13
SheldoN Gibt es größere Datentypen als long? Java Basics - Anfänger-Themen 2
S Rückgabetyp - Objekt gibt sich selber zurück Java Basics - Anfänger-Themen 4
G Eclipse gibt Fehler aus, Jelliot (z.B.) nicht Java Basics - Anfänger-Themen 1
C Programm gibt merkwürdige Zahl aus Java Basics - Anfänger-Themen 3
C Umgebungsvariable import anweisung gibt fehlermeldung Java Basics - Anfänger-Themen 2
N Unerklärlich: Rekursiver Algorithmus gibt falschen Datentyp zurück... Java Basics - Anfänger-Themen 4
P toString-Methode gibt immer null vor Variable aus Java Basics - Anfänger-Themen 9
L JTextField getText() gibt immer null zurück Java Basics - Anfänger-Themen 10
K Javalexikon für Grundbegriffe? Gibt es sowas? Java Basics - Anfänger-Themen 7
J SuM.kern.Maus gibt null obwohl initialisiert Java Basics - Anfänger-Themen 3
M Datentypen Char Array in String Array gibt Probleme Java Basics - Anfänger-Themen 10
A InputStream gibt nur jede 2te Zeile aus Java Basics - Anfänger-Themen 7
D p q formel gibt zum Teil falsche Werte aus Java Basics - Anfänger-Themen 5
R Gibt es eine (Schnittstelle) für .ini Datei Formatierungen? Java Basics - Anfänger-Themen 8
D Gibt es in Java Pointerarithmetik? Java Basics - Anfänger-Themen 3
B KeyTyped gibt falschen Wert aus Java Basics - Anfänger-Themen 2
Z Programm gibt nicht das gewollte aus. Java Basics - Anfänger-Themen 3
F Midi-Sequenzer gibt immer denselben, schrägen Ton aus? Java Basics - Anfänger-Themen 2
R Programm gibt keine Reaktion unter Eclipse auf Mac Java Basics - Anfänger-Themen 13
O Gibt es dafür einen regulären Ausdruck? Java Basics - Anfänger-Themen 9
M Gibt es eine einfachere Variante diese Aufgabenstellung zu lösen? Java Basics - Anfänger-Themen 11
J Gibt es eine möglichkeit ähnlich wie .equals(bedingung1 ||bedingung ..n) ? Java Basics - Anfänger-Themen 5
C Array ist befüllt, doch gibt sie immer 0 zurück Java Basics - Anfänger-Themen 3
Luk10 Methode gibt false zurück! Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben