2

C ++の正と負の無限大について読んでいます。

整数型には無限の値がないことを読みました。std::numeric_limits<int>::infinity();機能しstd::numeric_limits<int>::max();ませんが、機能し、整数型で表現できる最大値を表します。

したがって、std::numeric_limits<int>::max();整数型の はそのpositive infinite limit?

または、整数型には のみがmax valueあり、infinity valueは真ではありませんか?

4

2 に答える 2

3

整数は常に有限です。

探しているものに最も近いのは、整数を最大値に設定することです。これは、符号付き整数の場合、約 20 億程度です。

std::numeric_limits には has_infinity メンバーがあり、これを使用して、必要な型に無限表現があるかどうかを確認できます。これは通常、float や double などの浮動小数点数のみです。

于 2013-05-03T09:54:14.763 に答える
2

浮動小数点数には、「値が無限大」であることを示す特別なビット パターンがあります。これは、演算の結果が無限大であると定義されている場合に使用されます。

整数値には一定のビット数があり、すべてのビットは数値を表すために使用されます。「特別なビットパターン」はありません。ビット位置の合計が意味するものです。

編集: AMD64 Architecture Programmer's Manual のハードコピーの 315 ページに、次のように書かれています。

無限。無限大は、正または負の数 +∞ および -∞ であり、整数ビットが 1、バイアス指数が最大、小数が 0 です。無限大は、浮動小数点形式で表現できる最大数であり、負の無限大はそれより小さくなります。は任意の有限数よりも大きく、正の無限大は任意の有限数よりも大きくなります (つまり、アフィンの意味)。

また、ゼロでも無限でもない数を 0 で割ったり、無限大で掛けたり、無限大や 0 に無限大を加算したりすると、無限の結果が生成されます。算術無限大は正確です。たとえば、任意の浮動小数点数を +∞ に追加すると、+∞ の結果が得られます。 算術比較は、無限に対して正しく機能します。例外は、ソース オペランドとしての無限の使用が無効な操作を構成する場合にのみ発生します。

(入力ミスは私のものです)

于 2013-05-03T10:23:42.583 に答える