Ich möchte eine zufällige Zeichenfolge von 32 Bits nehmen und diese Bit-Zeichenfolge zu einem Float in C++
deklarieren.Machen Sie eine Fließkommazahl aus einer Binärzeichenfolge in C++
Zum Beispiel sollte die Zeichenfolge 0.0111 1111.1000 0000 0000 0000 0000 000
mir den Float entsprechend 1.5
geben, da dies die F32-Definition von 1,5 nach IEEE 754-2008 ist. Die erste 0 bedeutet + ve, die nächsten 8 geben Ihnen einen Exponenten von 127-127 = 0, und die 23-Bit-Mantisse gibt Ihnen die .5
.
Wenn ein String kein gutes Datenformat dafür ist, würde ich mich freuen, Vorschläge zu hören.
Eigentlich möchte ich eine zufällige Fließkommazahl in C++ erstellen, aber ich weiß nicht wie. Wo per Zufall ich meine jedes Bit ist unabhängig 0 oder 1. Die Lösungen (zum Beispiel hier: C++ random float number generation) Ich habe vorgeschlagen, mit einem zufälligen ganzzahligen Generator dann dividiert durch die RAND_MAX
und dann mit FLOAT_MAX
multiplizieren oder auf andere Weise einen float erstellen nach einer einheitlichen Verteilung. Das ist nicht gut für mich, während die Werte gleichmäßig verteilt werden, dies wird mehr Floats mit großen Exponenten erzeugen.
Grundsätzlich ist diese Frage aber für C++: Convert Double to Binary representation?
Wenn alles, was Sie wollen eine zufällige Gleitkommazahl ist zu finden unter: http://stackoverflow.com/questions/686353/c-random-float-number-generation – NathanOliver
'int32_t x =/* Zufallswert * /; float f = * (float *) & x; '. Nicht zu sagen, das ist eine gute Idee oder wird keine Regeln brechen. Aber es kann getan werden. –
std :: bitset, vielleicht? Außerdem scheint es, als würden Sie zwei völlig verschiedene Fragen stellen. Könnten Sie das klären? – JETM