IEEE-754 with single precisionに浮動小数点で表現できる浮動小数点数(整数でない整数)の計算方法を教えていただけますか?IEEE-754では浮動小数点で何倍の整数を単精度で表現できますか?
答えて
単精度でIEEE-754の浮動小数点で表現できる整数の数はいくつですか?
これを判断する方法はさまざまです。単精度またはbinary32と
IEEE-754は、全ての整数を符号化することができる2 に値0 - 符号化精度の24ビット(明示的に符号化された23 + 1は暗黙)を有しています。だから、ネガ(とない-0)、
(- 2^24 ... 2^24) is 0x2000000 - 1 different integer values
ですべての有限FPは2 と高い値も整数または "整数" です。 function to retrieve the number of available distinct values within a range?から
はしばしばbinary32各float
のシーケンス番号を返し、次の無いわゆるポータブルCコードです。
#include <stdint.h>
#include <string.h>
// Return a sequence number for each `float` value.
// Numerically sequential `float` values will have successive (+1) sequence numbers.
uint32_t float_sequence(float x) {
uint32_t u32;
memcpy(&u32, &x, sizeof u32);
if (u32 & 0x80000000) {
u32 ^= 0x80000000;
return 0x80000000 - u32;
}
return u32 + 0x80000000;
}
はfloat_sequence(FLT_MAX) - float_sequence(1 << 24) + 1
で、我々は有限float
> = 2 の数を持っています。
int main(void) {
int32_t imax = 1L << 24;
printf("%" PRIx32 "\n", float_sequence(FLT_MAX) - float_sequence((float)imax) + 1);
printf("%" PRIx32 "\n", (uint32_t) (imax - -imax) - 1);
printf("%" PRIx32 "\n", float_sequence((float) -imax) - float_sequence(-FLT_MAX) + 1);
return 0;
}
出力
34000000
1ffffff
34000000
だから0x69FFFFFFの合計又は整数値またはすべての可能なbinary32ビットパターンの約41%。
-0が+0とは異なるとみなされる場合はもう1つ。
最大有限バイナリ32(符号付き)は整数として128ビットの整数を格納する必要があることに注意してください。
整数を64ビットの2の補数に制限した場合、セットカウントは0x29FFFFFEまたは704,643,070になります。
私は怠け者だ、そう、次のように、私は(これはIEEE-754 binary32
浮動小数点型へfloat
マップを想定)力まかせ探索をコード化:適度に高速PC上で
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <math.h>
int main (void)
{
volatile union {
float f;
uint32_t i;
} num;
uint32_t count = 0;
num.i = 0;
do {
if ((num.f == floorf (num.f)) && !isinf (num.f)) count++;
num.i++;
} while (num.i);
printf ("count = %u\n", count);
return EXIT_SUCCESS;
}
を、後分未満、プログラムが出してくれる:
count = 1778384896
あなたが治療に-0 +0と冗長として、1を減算したい場合。このコードは、Cコンパイラが提供する最大IEEE-754準拠でコンパイルすることをお勧めします。私はWindows上でIntelコンパイラのバージョン13を使用し、/fp:strict
を指定しました。
- 1. Pure LuaでIEEE754倍精度浮動小数点数を解析するには?
- 2. Powershell - IEEE754単精度浮動小数点の16進数
- 3. 単精度浮動小数点表現から半精度浮動小数点数への変換
- 4. 倍精度浮動小数点型+ Eigen
- 5. 列の値から浮動小数点/倍精度/整数を除きます
- 6. 浮動小数点/倍精度/整数値をHBaseでエンコードする方法は?
- 7. 倍精度浮動小数点数の浮動小数点コードを読む
- 8. 引数は倍精度ですが浮動小数点が必要ですか?
- 9. AndroidでGroovyで倍精度浮動小数点数を浮動小数点にすると
- 10. 倍精度浮動小数点数型(Double#)の倍精度浮動小数点型をscalaで比較すると保存されますか?
- 11. MVC3エディターの倍精度浮動小数点型の表記
- 12. 浮動小数点精度
- 13. C#DateTime:倍精度浮動小数点型時間の倍精度化
- 14. 倍精度浮動小数点または破損エラーC++
- 15. 単精度32ビットIEEE 754浮動小数点とは何ですか?
- 16. JGoodiesで浮動小数点または倍精度をバインドする方法
- 17. Room Android - 浮動小数点型、整数型、倍精度型、...の配列。
- 18. 角度2は、倍精度浮動小数点数を調整したときのルートを加算します。
- 19. インテルAVX:倍精度浮動小数点変数
- 20. Javaで他の倍精度浮動小数点数の倍数に丸めますか?
- 21. C++での8倍精度浮動小数点変数の宣言
- 22. 浮動小数点数の精度
- 23. Microsoft Visual Studioのアセンブリで浮動小数点数または倍精度浮動小数点数を読み取り、表示します
- 24. 倍精度/浮動小数点誤差の補償
- 25. 拡張倍精度浮動小数点ライブラリC/C++
- 26. 浮動小数点配列を倍精度浮動小数点配列に変換してすぐに戻す
- 27. C++倍精度浮動小数点型の変数を初期化できますか?
- 28. 浮動小数点型の精度printf
- 29. MongoDB浮動小数点値の精度?
- 30. 2つの倍精度浮動小数点数を掛けた結果はゼロです。なぜですか?
整数の数はどういう意味ですか? –
いくつの仮数ビットと指数ビットがありますか?それは価値の数の点で何を意味しますか?どの指数が小数値に変換されるかはどのように決定するのですか? –
[IEEE-754のWikipediaのページ](https://en.wikipedia.org/wiki/Single-precision_floating-point_format)から:*有効小数点以下6桁のすべての整数はIEEE 754浮動小数点数に変換することができます。精度を損なうことなくポイント値を返し、nが-126から127までの整数であるような2^nと書くことができる任意の数は、精度を損なうことなくIEEE 754浮動小数点数に変換できます。 –