問題タブ [mantissa]

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.

0 投票する
1 に答える
453 参照

binary - バイナリ -> 符号付き仮数

符号付き仮数に 0xFA を書き込む方法を教えてください。バイナリ=1111_1010に変換しました。ここからどこへ行くべきかわからない。

問題は、「レジスタファイルが合計8ビット幅の場合、符号付き仮数部に次のように書きます。」

また、符号付き仮数の説明は素晴らしいでしょう!

0 投票する
1 に答える
147 参照

c - printf の仮数部の値がわずかにずれています

私はC言語がまったく初めてです。ここで取り上げようとしています。皆さんが私を少し助けてくれることを願っています。私が愚かなことを尋ねた場合は事前に申し訳ありませんが、この特定の質問に対する答えを実際に見つけることができませんでした. 私の英語もごめんなさい。

とにかく、以下は私にとって問題なく動作する私のコードです。

printfの結果が表示されます

しかし、Crit_Dmg と Magic_Dmg の値を高くすると、仮数が入力どおりに不正確になります...

たとえば、私はに変更しました

printfは以下のように見えます

仮数部が入力どおりに表示されないのはなぜですか? どうすれば修正できますか?

0 投票する
1 に答える
3309 参照

c - 32 ビット浮動小数点数から符号、仮数、指数を抽出する方法

そのため、uint32_t として指定された浮動小数点数から符号、指数、および仮数を抽出する必要があるタスクを取得しました。私は C でそれをしなければなりません。

符号については、MSB を検索します (最上位ビット。数値が 0 か 1 かによって、数値が正か負かがわかるため)

または、私の考えに直行しましょう。32 ビットの数値を 3 つの部分に「継ぎ合わせる」ことはできますか?

msb/sign の 1 ビットを取得します。次に、指数を表す 1 バイトが続き、最後に仮数を表す 23 ビットが続きます。

おそらくそのようには機能しませんが、ヒント/解決策を教えてもらえますか? 私はfreexpを知っていますが、Cをもう少し学ぶ別の方法が必要です.ありがとう.

0 投票する
2 に答える
56 参照

floating-point - 負数の浮動小数点表現

使用して....

仮数の符号ビット 2 の補数の 8 ビット指数 23 ビット仮数

次のようにコーディングします: -28.625

誰かがこれを行う最も簡単な方法を教えてもらえますか...講師はあまり役に立ちませんでした!

0 投票する
1 に答える
622 参照

c++ - double を 64 ビット ieee754 に変換するにはどうすればよいですか?

私はこのコードを持っています:

double の 64 表現を取得したい。

何を変更する必要がありますか?

0 投票する
2 に答える
372 参照

c++ - C++ で符号、指数、仮数部から NaN float 値を作成する

NaN 値を持つ浮動小数点変数を C++ で作成する必要があります。また、どの NaN がより大きな値を持つかを確認できるようにする必要もあります。NaN を比較するには、float の仮数部分を確認する必要があります。標準を使用して NaN を作成する

メソッドは、nanf 関数で異なる文字列が使用されていても、仮数部が同じ NaN になります。ビット パターンの基本部分から NaN を作成することにより、異なる仮数が提供されることが証明されるはずです。したがって、仮数のサイズで単純な並べ替えを実行できます。

0 投票する
1 に答える
1573 参照

floating-point - 浮動小数点をバイナリ表現に変換する際に問題が発生する

以下は、私が従おうとしているチュートリアルです。

数値をバイナリ表現に変換しようとすると、間違ってしまいます。誰かが私が間違っていることを教えてもらえますか?

バイナリ表現:

以来..

の指数で..

したがって、バイナリ表現は次のようになります。

しかし、なぜ 639.6875 を同じように変換すると正しい答えが得られるのでしょうか?

整数値の表現:

10 進数値の表現:

結合と正規化:

正規化するとき、基数を最初の 1 の右側に直接配置しますか? 指数に 127 をバイアスすると、127+9 = 136 になります。

バイナリ表現:

0 投票する
1 に答える
653 参照

export - netezza の倍精度出力で値が切り捨てられる

nzsql と 'nzunload' は、倍精度列の仮数値を切り捨てるだけであることに気付きました。問題は次のとおりです。

tot_amttable1 から選択します。

一方、データ分析に Aginity などの他のクライアントを使用すると、得られる出力は次のようになります。

また、netezza が 3 桁の仮数の後に 0 に遭遇すると、「切り捨て」が発生することがわかりました。

このデータベースをオラクルに移行しようとしていますが、この問題によりプロジェクト全体が混乱し、クライアントは移行スクリプトを信頼していません。誰かがこの問題に遭遇しましたか? 唯一の回避策は、たとえ IBM のエンジニアであっても、それをキャストすることTO_CHAR( '999,999.999', col )です。これにより、数十億行に対して実行する必要がある場合、アンロード スクリプトが強制終了されます。

0 投票する
1 に答える
170 参照

rounding - LSB エラーのある浮動小数点加算

Verilog でハードウェアの倍精度加算器を実装しています。ハードウェア出力を MATLAB (または C) の倍精度加算出力と比較する検証段階で、同じ丸めモード (最も近い偶数に丸める) を使用していることを考慮して、LSB が一致しない奇妙なケースをいくつか見つけました。 . 私の質問は、C 計算の精度に関するものです。丸めを行う際に本当に正確ですか、それとも一部の CPU アーキテクチャ (32 ビットまたは 64 ビット) に限定されていますか?

これが例です。

= 0x62a5a1c59bd10037 = 1.5944933396238637e+167

B = 0x62724bc40659bf0c = 1.685748657333889e+166 = 0.1685748657333889e+167

正しい出力 (上記の実数を手動で追加するだけ)

= 1.7630682053572526e+167 = 0x62a7eb3e1c9c3819 (これは私のハードウェアと一致します)

CでA + Bを実行しようとすると、結果は次のようになります

= 1.7630682053572525e+167 = 0x62a7eb3e1c9c3818

中間演算を確認するためにこのアプリケーションを試してみると http://www.ecs.umass.edu/ece/koren/arith/simulator/FPAdd/

仮数の追加から、C が丸めを正しく行っていないことがわかります (最も近い偶数に丸めます)。この場合、仮数は 1 を追加して丸められる必要があります。なぜこれが起こっているのですか?

0 投票する
1 に答える
2096 参照

matlab - matlabで科学数の仮数と指数を計算する

mat labで数値の仮数と指数を見つけたいです。それらを計算する関数または方法はありますか?

たとえば、数値が 0.0005 の場合、この関数は仮数部に 5 を返し、指数部に -4 を返します。

ありがとうございました