-3

私は Dev-C++ コンパイラと wxDev-C++ コンパイラを使用し、プログラミング言語を学ぶために C++ Primer Plus を読んでいます。私の本の文字通りの整数型の説明は次のとおりです。

  • 短整数は、少なくとも 16 ビット幅です。
  • int 整数は、少なくとも short と同じ大きさです。
  • long 整数は、少なくとも 32 ビット幅で、少なくとも int と同じ大きさです。
  • long long 整数は、少なくとも 64 ビット幅で、少なくとも長さと同じ大きさです。

誰かが私にこれを説明できますか?

4

3 に答える 3

2

リストを1つずつ見ていきましょう。

  • 整数はshort少なくとも 16 ビット幅です。

    つまり、ashortが 16 ビットのプラットフォーム、17 ビットのプラットフォーム、18 ビットのプラットフォームなどがありますが、17 ビット以下の short を提供できるプラットフォームはありません。

    したがって、議論のために、いくつかの異なるプラットフォームを定義しましょう。大文字で名前を付けます。プラットフォーム A から D には 16 ビットshort、E と F には 32 ビットshort、プラットフォーム G には 1024 ビットがあるとしますshort。これらのプラットフォームはすべて、これまでのところ準拠しています。

  • 整数は、int少なくとも short と同じ大きさです。

    つまり、intより小さくすることはできませんshortが、任意に大きくすることはできます。たとえば、上記のプラットフォーム A から D はすべて 16 ビットintを使用できますが、プラットフォーム E と F はint少なくとも 32 ビットにする必要があり、プラットフォーム F は少なくとも 1024 ビットにする必要があります。

    A が 16 ビットを選択し、B、C、E が 32 ビットを選択し、D と F が 64 ビットを選択し、G が再び 1024 ビットを選択したとします。これらの選択はすべて、これまでのルールを満たしています。

  • long整数は少なくとも 32 ビット幅で、少なくとも と同じ大きさですint

    ここで2つの条件があります。まず、long少なくとも 32 ビットが必要です。したがって、プラットフォーム A でさえlong、16 ビットのみを選択することはできません。2 番目に、longよりも短くすることはできません。intつまり、たとえば、プラットフォーム DFでは 32 ビットを使用できません。プラットフォーム G の場合、最小サイズは 1024 ビットです。longintlong

    したがって、プラットフォーム A、B、および E は 32 ビット長を選択し、プラットフォーム C、D、および F は 64 ビットを選択し、G は 1024 ビットを選択するという選択肢が考えられます。

  • long long整数は、少なくとも 64 ビット幅で、少なくとも と同じ大きさですlong

    もう一度詳しく説明しませんが、プラットフォーム A から F はすべて 64 ビット以上を選択でき、G は 1024 ビット以上を選択できます。

    完全を期すために、プラットフォーム A から D は 64 ビットを選択し、E と F は 128 ビットを選択し、G は 1024 ビットを選択すると仮定しましょう。

次に、すべてが有効なプラットフォームの次のリストを取得します (ただし、すべての可能性のある有効なプラットフォームではありません)。

           A     B     C     D     E     F     G
short      16    16    16    16    32    32    1024
int        16    32    32    64    32    64    1024
long       32    32    64    64    32    64    1024
long long  64    64    64    64    128   128   1024

プラットフォーム A は典型的な 16 ビット プラットフォームです (ただし、16 ビット プラットフォームが最新であり、long longまだ正式なタイプではありませんでした)。プラットフォーム B は典型的な 32 ビット プラットフォームですが、多くの 64 ビット プラットフォームも表します。プラットフォーム C も、可能な 64 ビット プラットフォームの実装です。私が信じていない他のすべてはどこでも使用されていますが、とにかく有効な実装です。

ご覧のとおり、たとえば、一部のプラットフォームでintは と同じサイズでshortあり、他のプラットフォームでは と同じサイズlongであり、さらに他のプラットフォームでは、その中間であり、一部のプラットフォームshortlongは同じサイズである場合があります。intも同じサイズである必要があります。

于 2013-07-14T21:54:42.543 に答える
0

最新のハードウェアで整数がどのように表現されるかを理解していないだけだと思います。最初にバイナリで数値を表す方法について読んでください。

2進数

各ビットは、数値のバイナリ表現で0またはを表します。1負の数を表すために、ここで読むことができるいくつかの特別なトリックを使用します。

2 の補数(C のint型などの符号付き数値に使用)

型の「ビット幅」の数は、型が表現できる最大 (および最小の負) の数値を制限するだけです。たとえば、このshort型は から までの数値-327683276716 ビットで表すことができますが、32 ビットの整数では まで を表すことができ-2147483648ます2147483647

于 2013-07-14T21:01:26.437 に答える