Mit dem Horner Schema hab ich bisher nur die Polynomdivision umgehen können (Wir haben in der Schule explizit nur Horner Schema durchgenommen weil der Lehrer meinte Polynomdivision braucht niemand wenn er das Horner Schema kann), aber wie man da in andere Zahlensysteme umwandelt weiß ich noch nicht.AND51 hat geschrieben:Natürlich kann man Floatzahlen aus unserem Dezimalsystem in das Binärsystem und damit auch in jedes andere System umwandeln.Und am besten gleich einen Binärstring einer Floatzahl hinzufügen, mit Formeln zum zurückwandeln
Das geht mit dem Horner-Schema.
Umwandlung float in einen Hexstring
-
- Beiträge: 6291
- Registriert: 29.08.2004 08:37
- Computerausstattung: Hoffentlich bald keine mehr
- Kontaktdaten:
Re: Umwandlung float in einen Hexstring
Zuletzt geändert von DarkDragon am 04.10.2009 09:46, insgesamt 1-mal geändert.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: Umwandlung float in einen Hexstring
@Thorium
Mag ja sein das man den Wert berechnen kann, aber ein Hexstring ist es nicht.
Woran soll man erkennen, das es 32-Bit und Floatingpoint ist?
Netter Rechner
korrekte Schreibweise eines 32-Bit Floatingpoint Hexstrings suche ich immer
noch
Mag ja sein das man den Wert berechnen kann, aber ein Hexstring ist es nicht.
Woran soll man erkennen, das es 32-Bit und Floatingpoint ist?
Netter Rechner

korrekte Schreibweise eines 32-Bit Floatingpoint Hexstrings suche ich immer
noch

Re: Umwandlung float in einen Hexstring
Klar ist es ein Hexstring, kodiert nach IEEE-754.ts-soft hat geschrieben:@Thorium
Mag ja sein das man den Wert berechnen kann, aber ein Hexstring ist es nicht.
Woran soll man erkennen, das es 32-Bit und Floatingpoint ist?
Netter Rechner![]()
korrekte Schreibweise eines 32-Bit Floatingpoint Hexstrings suche ich immer
noch
Erkennen tut man nicht, man weis. Es ist immer eine Interpretationsfrage.
Du würdest ja auch nicht anzweifeln das 1056 ein hexadezimaler String ist, wenn ich das sagen würden. Erkennen kann man es nicht, man muss es einfach wissen. Man kann Daten halt unterschiedlich interpretieren. Die Zahl könnte hexadezimal sein, oder dezimal, oder sogar octal. Reine Interpretationssache.
Zu mir kommen behinderte Delphine um mit mir zu schwimmen.
Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke!
Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke!

- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: Umwandlung float in einen Hexstring
> Erkennen tut man nicht, man weis. Es ist immer eine Interpretationsfrage.
Warum glaubt mir keiner
Also ist die Umwandlung in Hexstrings nicht möglich, lediglich in HexwerteEs gibt keine allgemeingültige Regel für die Darstellung von
Fließkommazahlen mit Hexadezimalzahlen, d.h. es gibt, anders als bei der
Fließkommadarstellung von Dezimalzahlen, keine Regel für die Darstellung
der Trennung von 'Vorkomma-' und 'Nachkomma'-Stellen. Das Komma dürfte hier
nicht verwendet werden, da sonst z.B. dezimales '1.1' und hexadezimales '1.1'
nicht zu unterscheiden sind - es sei denn, es wird ein Präfix oder Suffix verwendet,
das den hexadezimalen Wert als solchen kennzeichnet. Aber auch dafür gibt es keine
allgemeingültige Regel, es gibt nur in bestimmten, relativ beschränkten
Bereichen (Computer) gewisse Konventionen ('$...', '...$', 'x...', '0x...',
'...h', '&H...').

Warum glaubt mir keiner

Re: Umwandlung float in einen Hexstring
Langstein hat geschrieben:ich möchte eine Floatzahl (z.B. 72.0) in einen Hexstring z.B. X'42900000' umwandeln.
Ich glaube auch, dass der OP das so gemeint hat. Er hätte besser geschrieben: "Ich möchte den Hexdump des Speicherbereiches, in dem sich eine bestimmte Fließkommazahl befindet." o.Ä. Dann wäre die Verwirrung geringer gewesen.Thorium hat geschrieben:Er hat sich nur etwas unglücklich ausgedrückt. Natürlich ist das keine Kommazahl, es ist ein Hexstring der Binärdaten des Floats. So wie wenn du den Float in eine Datei speicherst und dir die Datei dann mit nem Hexeditor anschaust.

Gruß, Little John
Re: Umwandlung float in einen Hexstring
Thomas, woher stammt denn dieses Zitat?

Tatsächlich ist auch z.B. das dezimale '21' ohne Präfix oder Suffix nicht vom hexadezimalen '21' zu unterscheiden. Das wird wohl der Grund sein, weshalb man sowas eben mit Prä- oder Suffix schreibt ... Aus ganz ähnlichen Gründen schreibt man übrigens manchmal auch nicht einfach nur '7', sondern '7 kg', '7 m', '7 EUR' oder sonstwas, je nachdem was man meint.
Gruß, Little John
Jo hauaha! Das ist das schönste Nonsense-Argument, das ich seit langem gelesen habe.Das Komma dürfte hier nicht verwendet werden, da sonst z.B. dezimales '1.1' und hexadezimales '1.1' nicht zu unterscheiden sind - es sei denn, es wird ein Präfix oder Suffix verwendet, das den hexadezimalen Wert als solchen kennzeichnet.

Tatsächlich ist auch z.B. das dezimale '21' ohne Präfix oder Suffix nicht vom hexadezimalen '21' zu unterscheiden. Das wird wohl der Grund sein, weshalb man sowas eben mit Prä- oder Suffix schreibt ... Aus ganz ähnlichen Gründen schreibt man übrigens manchmal auch nicht einfach nur '7', sondern '7 kg', '7 m', '7 EUR' oder sonstwas, je nachdem was man meint.

Gruß, Little John
- Froggerprogger
- Badmin
- Beiträge: 855
- Registriert: 08.09.2004 20:02
Re: Umwandlung float in einen Hexstring
...was für eine Diskussion 
@Langstein:
Dein geposteter Code ist
Das Debug m(0) gibt nur den Pointer auf den Datensatz m(0) aus, nicht aber die entsprechenden Bytes, wie anscheinend von Dir gewünscht. Dazu nimm Debug m(0)\byte[0]...Debug m(0)\byte[3], oder die von Thorium gepostete Antwort mittels Hex(PeekL(...)), oder den (mit deinem fast identischen) Ansatz von Kaeru mittels StructureUnion, aber diesmal nicht einzlne Bytes, sondern ein Long.
All die Lösungen geben (wie hier wild diskutiert) die Bits des Floats in seiner Standard-Fließkommadarstellung wieder. Dabei ist das erste Bit das Vorzeichen, dann folgen binäre Codierungen des Exponenten und der Mantisse. Diese lassen sich natürlich auch als Hexwerte darstellen. Dies ist allerdings (offensichtlich) was anderes, als die Zahl im Hexadezimalsystem darzustellen. Also je nachdem, was Du erreichen möchtest, kennst Du nun bereits 3 Lösungen, oder noch keine

@Langstein:
Dein geposteter Code ist
Code: Alles auswählen
Structure my_data
StructureUnion
byte.c[3];0...3
real_value.f
EndStructureUnion
EndStructure
Dim m.my_data(0)
m(0)\real_value = 72.0
Debug m(0)
All die Lösungen geben (wie hier wild diskutiert) die Bits des Floats in seiner Standard-Fließkommadarstellung wieder. Dabei ist das erste Bit das Vorzeichen, dann folgen binäre Codierungen des Exponenten und der Mantisse. Diese lassen sich natürlich auch als Hexwerte darstellen. Dies ist allerdings (offensichtlich) was anderes, als die Zahl im Hexadezimalsystem darzustellen. Also je nachdem, was Du erreichen möchtest, kennst Du nun bereits 3 Lösungen, oder noch keine

!UD2
- Fluid Byte
- Beiträge: 3110
- Registriert: 27.09.2006 22:06
- Wohnort: Berlin, Mitte
-
- Beiträge: 6291
- Registriert: 29.08.2004 08:37
- Computerausstattung: Hoffentlich bald keine mehr
- Kontaktdaten:
Re: Umwandlung float in einen Hexstring
Soweit ich mich erinnern kann hieß es in PureBasic immer:Froggerprogger hat geschrieben:...was für eine Diskussion
@Langstein:
Dein geposteter Code istDas Debug m(0) gibt nur den Pointer auf den Datensatz m(0) aus, nicht aber die entsprechenden Bytes, wie anscheinend von Dir gewünscht. Dazu nimm Debug m(0)\byte[0]...Debug m(0)\byte[3], oder die von Thorium gepostete Antwort mittels Hex(PeekL(...)), oder den (mit deinem fast identischen) Ansatz von Kaeru mittels StructureUnion, aber diesmal nicht einzlne Bytes, sondern ein Long.Code: Alles auswählen
Structure my_data StructureUnion byte.c[3];0...3 real_value.f EndStructureUnion EndStructure Dim m.my_data(0) m(0)\real_value = 72.0 Debug m(0)
All die Lösungen geben (wie hier wild diskutiert) die Bits des Floats in seiner Standard-Fließkommadarstellung wieder. Dabei ist das erste Bit das Vorzeichen, dann folgen binäre Codierungen des Exponenten und der Mantisse. Diese lassen sich natürlich auch als Hexwerte darstellen. Dies ist allerdings (offensichtlich) was anderes, als die Zahl im Hexadezimalsystem darzustellen. Also je nachdem, was Du erreichen möchtest, kennst Du nun bereits 3 Lösungen, oder noch keine
AlsoPureBasic Hilfe hat geschrieben:Bitte beachten Sie, dass sich in Strukturen ein statisches Array[] nicht so verhält wie das normale BASIC Array (definiert mittels Dim), um konform zum C/C++ Strukturen Format zu bleiben (was direkte API Strukturen Portierung ermöglicht). Dies bedeutet, dass a[2] ein Array von 0 bis 1 definiert, wogegen Dim a(2) ein Array von 0 bis 2 anlegt.
Code: Alles auswählen
; ...
byte.c[4] ;0...3
; ...

Danke dass ich auch mal die Möglichkeit bekomm dir was zu berichtigen.
Achja, der Typ .c gefällt mir nicht (Kompillier das nur mal im Unicode Modus, dann ist der Datenblock ja doppelt oder vierfach so groß und es sind nichtmehr einzelne Bytes). Neuerdings gibts doch .a.
[EDIT]
Ups das war ja garnicht Froggerproggers Code.


Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Re: Umwandlung float in einen Hexstring
Achso. Ich dachte, er wolle eine Zahl in eine Binärkommazahl (oder Hex-Kommazahl) umwandeln und das Ergebnis, beispielsweise "BAD,F00D" nur als String speichern, weil es keinen nativen Datentyp dafür gibt.ts-soft hat geschrieben:Es geht darum, eine Floatzahl als Hex oder Binärstring zurückzuwandeln.
Es gibt weder hexadezimale Floatzahlenstring, noch binäre Floatzahlenstrings, somit
sind sie auch nicht zurückwandelbar, auch nicht mit einem Hörnchen-Schema
Dann habe ich das Problem wohl falsch verstanden.
PB 4.30
Code: Alles auswählen
Macro Happy
;-)
EndMacro
Happy End