Warum gibt es keine 2-byte-float und macht eine Umsetzung gibt es bereits?
Vorausgesetzt, ich bin wirklich gedrückt für Speicher und wollen einen kleineren Bereich (ähnlich den kurzen vs int). Shader-Sprachen unterstützen bereits half
für eine floating-point-mit der Hälfte der Präzision (nicht nur hin und her konvertieren, damit der Wert zwischen -1 und 1, das ist, kehren Sie ein Schwimmer so: shortComingIn /maxRangeOfShort
). Gibt es eine Implementierung, die bereits für eine 2-byte-float?
Ich bin auch daran interessiert zu wissen, eine (historische?) Gründe warum es keine 2-byte-float.
InformationsquelleAutor der Frage Samaursa | 2011-04-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Re: Implementierungen: Jemand hat sich offenbar geschrieben
half
für C, würden die (natürlich) funktioniert in C++: https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/cellperformance-snippets/half.cRe: Warum ist
float
vier bytes: Wahrscheinlich, weil darunter Ihre Präzision ist also begrenzt.InformationsquelleAutor der Antwort T.J. Crowder
Gut,
wenn Sie zu wenig Arbeitsspeicher haben Sie halten ablegen der float-Konzept? Schwimmt bis eine Menge von bits, die nur zum speichern, wo der Dezimalpunkt wird.. Man kann dies umgehen, wenn Sie wissenwo Sie brauchen dem Komma, sagen wir, Sie möchten, speichern Sie einen Dollar-Wert, können Sie einfach speichern Sie Sie in Cents:
Dass ist natürlich nur eine option, wenn es möglich ist, für Sie, bestimmen Sie die position des dezimalpunktes. Aber wenn Sie können, immer bevorzugen, denn dies beschleunigt auch alle Berechnungen!
rgds, Kira 🙂
InformationsquelleAutor der Antwort Kirab
Dort ist eine IEEE-754-standard für 16-bit-floats.
Es ist ein neues format, mit standardisiert wurden im Jahr 2008 basierend auf einer GPU, die 2002 veröffentlicht wurde.
InformationsquelleAutor der Antwort dan04
Ein bisschen weiter gehen als Kiralein auf den Wechsel zu zahlen, könnten wir einen Bereich definieren und es ermöglichen, die integer-Werte eines kurz darstellen, gleich Unternehmensbereiche über den Bereich, mit einigen der Symmetrie, wenn gebietsübergreifenden null:
Unterschiede zwischen diesen integer-Versionen und mit der Hälfte precision floats:
InformationsquelleAutor der Antwort Phil H
Gibt es wahrscheinlich eine Vielzahl von Arten in verschiedenen Implementierungen. Ein float-entspricht der stdint.h scheint wie eine gute Idee. Aufruf (alias?) die Typen, die durch Ihre Größe. (float16_t?) Ein float werden 4 Byte ist nur, gerade jetzt, aber es wird wahrscheinlich nicht kleiner. Begriffe wie halbe und lang und meist sinnlos geworden mit der Zeit. Mit 128 oder 256 bit-Computer, Sie konnte alles bedeuten.
Arbeite ich mit Bildern (1+1+1 byte/pixel) und die ich Ausdrücken möchte, jeder Pixelwert im Vergleich zum Durchschnitt. So Gleitkomma-oder gezielt behoben, aber nicht 4 mal so groß wie die raw-Daten bitte. Ein 16-bit-float-klingt ungefähr richtig.
Dieser GCC 7.3 weiß nicht "die Hälfte", vielleicht in einem C++ - Kontext.
InformationsquelleAutor der Antwort Alan Corey