...also, bei einem float schwierig. Ich dachte immer, das ist nicht spezifiziert, dh Compiler kann floats anordnen wie er will, je nach Hardware ggf verschieden.
...also, bei einem float schwierig. Ich dachte immer, das ist nicht spezifiziert, dh Compiler kann floats anordnen wie er will, je nach Hardware ggf verschieden.
Mit Naturgesetzen kann man nicht verhandeln. --Harald Lesch
Ein Atomkrieg würde die Menschheit auslöschen. Hätte aber auch Nachteile.
Nein, das ist selbstverständlich definiert. Der erste Standard, dem man im ersten Semester bebegnet. Was du meinst ist die Bytereihenfolge. Die kann unterschiedlich sein, aber das spielt hier keine Rolle. (uint32_t)floatvar ist immer gleich.
Nutzt aber nichts, wenn man in der Programmiersprache nicht casten kann
Geändert von Ramkhamhaeng (07. Dezember 2019 um 01:23 Uhr)
Meinst du IEEE 754? Der ist mWn z. B. in C nicht definiert.
#KriegIstFrieden
#FreiheitIstSklaverei
#UnwissenheitIstStärke
http://www.lua.org/manual/5.3/manual.html#3.4.2
Das sollte es doch sein.
Meine Liste:
- K
- T
- V
Das spielt alles überhaupt keine Rolle Auf den von Tiramisu relevanten Rechnern halten sich die normalisierten einfach-genauen 32-bit-Floatzahlen an das in IEEE 754 angegebene Format. Die Interpretation jedes Bits ist wohldefiniert. Mehr braucht er nicht.
Ja, es gibt andere Standards, ja es gibt Rechner mit anderen Architekturen, ja es macht intern einen Unterschied ob der Wert in nem normalen Register oder nem Floatingpoint-Register liegt. Und das weißt du eigentlich auch, denn du schriebst anfangs selbst:
Kenne Lua nicht, aber so weit ich es in der Dokumentation überblicke, geht es dort nicht mit den Mitteln der Sprache. Eigentlich auch nicht so tragisch, da man es meist nur zum Debuggen braucht. Performance ist auch kein Argument, Tira, da Lua ne Scriptsprache ist.
Das funzt nur mit Integer.
Das könnte ja aber ein Grund für Lua sein, das nicht anzubieten. Weil der Code sonst nicht mehr portabel ist?Ja, es gibt andere Standards, ja es gibt Rechner mit anderen Architekturen, ja es macht intern einen Unterschied ob der Wert in nem normalen Register oder nem Floatingpoint-Register liegt.
Vielleicht ist es das einfachste, eine Funktion dafür in C zu schrieben? (und von lua aus aufzurufen)
Verstand op nul, frituur op 180.
Nicht nur deswegen. Diese bitwise operators haben keine 0-1-Ziffern sondern ganze Zahlen als return-Wert, weil sie etwas ganz anderes machen als das, was ich eigentlich bräuchte.
Nicht zu fassen, dass es für so eine elementare Funktion wie die Binärzifferabfrage keine Implementierung gibt!
Stimmt hab ich überlesen. Gibts da union wie in C?
Edit: @Tira da nutzt man auch eher bitmasken um zu schauen ob das bit x bzw die bits y gesetzt ist wie zb:
um das bit an sechster stelle zu überprüfen.Code:if y & 1<<5 mach das else mach dies
Susanne würde übrigens gern wissen ob es da nicht einen eleganteren Weg gibt? Ich kann mir bei dir irgendwie wenig Anwendungen vorstellen, welche derartiges bitgeschubse bei der Verwendung von floats wirklich brauchen.
Geändert von Schlumpf (07. Dezember 2019 um 14:27 Uhr)
Meine Liste:
- K
- T
- V
Achso. Wäre es denn möglich, die floats in große integer-Werte umzuwandeln und dann die Ziffern zurück zu transformieren? Z.B. multipliziere 34.23244 mit einer eine großen Zweierpotenz wie 2^23 (was für Binärrechner einfach sein sollte), wandle den Wert in Integer um (Nachkommastellen werden einfach ignoriert) und lese die Binärziffern ab, die in diesem Beispiel einfach nur um 23 Stellen nach rechts verschoben wurden. Das müsste doch von der Laufzeit her schnell zu berechnen sein.
Bei der Konvertierung kommt ein ganz anderes bitmuster raus da 34.23244* 2^23 in float was ganz anderes ist als int:
287162520.04352 = 01001101100010001110111000000101 in float darstellung, aber
287162520 = 00010001000111011100000010011000
Deswegen hat shakka recht, mache es in C oder such dir einen besseren Weg den es mit Sicherheit gibt.
Meine Liste:
- K
- T
- V
Naja, es spielt eine Rolle, wenn dieses Programm, das Merkmale eines bestimmten Formats nutzt, auf verschiedenen Plattformen ausgeführt wird. Aber gut, ich denke, wir können uns darauf einigen, dass Tiras Programm wohl eher keine so breite Verwendung finden wird.
Ich bin auch neugierig, was Tira da eigentlich vorhat. Evtl. versucht er nur mal wieder ein Problem möglichst kompliziert zu lösen.
#KriegIstFrieden
#FreiheitIstSklaverei
#UnwissenheitIstStärke