問題タブ [ieee-754]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - IEEE - 754 - signbit、exponent、frac、normalized などを検索
IEEE 754 ビット浮動小数点数として 8 桁の 16 進数を取り込んでおり、その数値 (signbit、expbits、fractbits、正規化、非正規化、無限大、ゼロ、NAN) 浮動小数点数に関する情報を出力したいのですが、単一である必要があります。
私はビットシフトについて読みましたが、これが私がそれを行う方法だと思いますか?. ただし、100% 確実ではありません。符号ビットが数字の一番左の位置にあることを理解しています。正または負を示します。それぞれを見つけるにはどれだけシフトしますか?それぞれを見つけるためにシフトし続けるだけですか?誰かが私がそれぞれを見つける方法を説明できますか?
符号ビットを見つけるために 1 シフトしますか? 指数を取得するために 8 シフトしますか? frac を得るために 23 シフトしますか?
符号ビットはゼロでなければなりません
expbits は 128 にする必要があります
fracbits は 0x00000000 である必要があると思います...
もしそうなら、シフト後にどのようにテストしますか?
これは私がこれまでに持っているものです
私が望む方法に関する私の入力(scanf)..
それは何をしているのか..
c - 浮動小数点演算におけるゼロへのフラッシュ動作
私が覚えている限りでは、IEEE 754 は、非正規化数をより高速に処理するためのフラッシュ ツー ゼロ モードについて何も述べていませんが、一部のアーキテクチャではこのモードが提供されています (例: http://docs.sun.com/source/806-3568/ncg_lib .html )。
この技術文書の特定のケースでは、非正規化数の標準処理がデフォルトであり、flush-to-zero を明示的に有効にする必要があります。デフォルト モードでは、非正規化数もソフトウェアで処理されるため、処理が遅くなります。
私は、実行時に発生する可能性のある値の正しい (場合によっては不正確な) 範囲を予測しようとする組み込み C 用の静的アナライザーに取り組んでいます。実行時に問題が発生する可能性を排除するために使用できるようにすることを目的としているため (たとえば、重要な組み込みコード)、正しいことを目的としています。これには、分析中に可能なすべての動作をキャプチャする必要があり、したがって、浮動小数点計算中に生成されるすべての可能な値が必要です。
この文脈では、私の質問は 2 つあります。
組み込みアーキテクチャの中で、flush-to-zero のみを提供するアーキテクチャはありますか? 彼らはおそらく「IEEE 754」として宣伝する権利を必要としないでしょうが、十分に近い IEEE 754 スタイルの浮動小数点演算を提供することができます。
組み込みコンテキストで両方を提供するアーキテクチャの場合、反応時間をより予測可能にするために、システムによってゼロへのフラッシュがアクティブ化される可能性は低いですか (これらの組み込みシステムの一般的な制約)?
浮動小数点値に使用する区間演算でのゼロへのフラッシュの処理は、それを行う必要があることがわかっている場合は十分に簡単です。私の質問は、それを行う必要があるかどうかです。
c# - バイナリ データから 64 ビットの IEEE 標準 754 倍精度数を読み取るにはどうすればよいですか?
64 ビットの IEEE 標準 754 浮動小数点数で構成されるデータ ストリームがあります。C# を使用してこれらを double として読み取るにはどうすればよいですか? long/ulong を double に変換する方法はありますか?
ieee-754 - 2 の補数と IEEE 754 表現に関する質問
2 バイトの 2 の補数値 0xFF72 の値を見つけるにはどうすればよいですか?」
- 0xFF72 をバイナリに変換することから始めますか?
- ビットを反転します。
- 2進数で1を足す。// ここで失われます。
- 10 進数を書きます。
私はちょうど知りません..
また、
値が 0x7FF8000000000000 の 8 バイト double はどうでしょう。浮動小数点としての値は?
c++ - float を bigint に変換します (別名、バイナリ指数と仮数を取得するポータブルな方法)
C++ には、任意のサイズの整数を保持できる bigint クラスがあります。
大きな float または double の数値を bigint に変換したいと思います。私は作業方法を持っていますが、それは少しハックです。IEEE 754 数値仕様を使用して、入力数値の 2 進符号、仮数、および指数を取得しました。
コードは次のとおりです (Sign はここでは無視されますが、重要ではありません)。
動作しますが、かなり醜く、移植性がどの程度かわかりません。これを行うより良い方法はありますか?float または double からバイナリの仮数部と指数部を抽出する、より醜く移植性の低い方法はありますか?
答えてくれてありがとう。後世のために、frexp を使用したソリューションを次に示します。ループのために効率が低下しますが、float と double の両方で機能し、reinterpret_cast を使用せず、浮動小数点数表現の知識に依存しません。
64-bit - 64ビット浮動小数点数はすべての最新のPCで同じように動作しますか?
同じ64ビット浮動小数点数で同じ操作を行うと、最新のPCや最も一般的なプログラミング言語でまったく同じ結果が得られると想定できるかどうかを知りたいのですが。(C ++、Java、C#など)。数値を操作していて、結果も数値であると想定できます(NaN、INFなどはありません)。
浮動小数点数を使用した計算には、非常によく似た2つの標準(IEEE854-1987とIEEE754-2008)があることを私は知っています。しかし、それが実際にどのように行われているのかはわかりません。
java - 他のNaN値は何ですか?
のドキュメントにjava.lang.Double.NaN
は、
タイプのNot-a-Number(NaN)値を保持する定数
double
。これは、によって返される値と同等Double.longBitsToDouble(0x7ff8000000000000L)
です。
これは他にもあることを意味しているようです。もしそうなら、どうすればそれらを手に入れることができますか、そしてこれは移植可能に行うことができますか?
明確にするために、私は次のようなdouble
値を見つけたいと思いますx
と
どちらも真実です。
c++ - IEEE-754 操作のオープンソースの c/c++ 実装はありますか?
IEEE-754 操作の参照実装を探しています。そのようなことはありますか?
.net - CLR JITの最適化は因果関係に違反しますか?
私は同僚に有益な例を書いて、フロートの平等をテストすることがしばしば悪い考えである理由を彼に示しました。私が行った例は、.1を10回追加し、1.0(入門的な数値クラスで示したもの)と比較することでした。2つの結果が等しい(コード+出力)ことに驚いた。
いくつかの調査では、この結果は信頼できないことが示されました(フロートの等式のように)。私が最も驚いたのは、他のコードの後にコードを追加すると、計算結果(コード+出力)が変わる可能性があることです。この例には、まったく同じコードとILがあり、C#がもう1行追加されていることに注意してください。
私はフロートに平等を使用することになっていないので、これについてあまり気にする必要はないことを知っていますが、これを示したすべての人と同様に、それは非常に驚くべきことでした。計算を実行した後に何かを行うと、前の計算の値が変わりますか?それは、人々が通常頭に置いている計算モデルではないと思います。
私は完全に困惑しているわけではありません。計算結果を変更する「等しい」場合に何らかの最適化が発生していると想定するのは安全のようです(デバッグモードでビルドすると「等しい」場合が防止されます)。明らかに、CLRが後でフロートをボックス化する必要があると判断した場合、最適化は中止されます。
少し検索しましたが、この動作の理由を見つけることができませんでした。誰かが私を手がかりにできますか?
language-agnostic - IEEE-754 では、0 < ABS(const) < 1 で、(x / const) * const は X の異なる値に対して異なる結果を返すことが保証されていますか?
この操作を行うとします。
で定義される倍精度引数を使用しIEEE 754-2008
、最初に除算し、次に乗算します。
const
範囲内0 < ABS(const) < 1
です。
操作が成功する (オーバーフローが発生しない) と仮定すると、X
この操作の個別の引数は個別の結果を返すことが保証されますか?
言い換えれば、X1
、X2
、0 < ABS(const) < 1
それで、X1 <> X2
でも(X1 / const) * const = (X2 / const) * const
?