大きな数値が2倍です。私はそれの30右端ビット(不可欠な部分)を取得する必要があります。 それは整数演算あった場合は、次のC内のダブルの右端Nビットを抽出
var & 0x3FFFFFFF
私は目的のためにいくつかの機能を実装することができますが、私はいくつかの簡単なソリューションを必要としています。 1つはありますか?
*編集:
すべての回答は私のためには機能しません。 私が説明しよう:例えば私は、x = 9362446620820194.0000ダブルを持って、その数値の整数部分の30の右端のビットは、私はuint64_tを使う代わりに、二重、私は32ビットのサポートを必要とすることができる数957350626.
ですシステム。
P.S.私は単純なバイナリ数値表現ではなく、マシン(メモリ)
何の右端30ビットですか?重要なのは?これは、スケールされたログベース2の値の一部になります。指数と符号ビットはどうですか? – talonmies
彼らはあなたが求めていることを理解していないように見えるので、動作しません。まず、IEEE-754バイナリ64形式の[このリンク](http://en.wikipedia.org/wiki/Double-precision_floating-point_format#IEEE_754_double-precision_binary_floating-point_format:_binary64)を読んでください。 – talonmies
32ビットシステムでは 'uint64_t'を使うことができます。 – interjay