• ベストアンサー

データ型64ビットってどんな環境でも使えるのですか?

こんにちは。かなり初歩的な質問だとは思うのですが 教えてください。よろしくお願い致します。 DBやCのデータ型などでdoubleなど64ビット型があります。64ビットというのはOSやCPUの64ビットとは何となく違う気はしているのですが・・・そもそもどんな環境でも64ビットのデータ型は使えるものなのでしょうか? 64ビットのデータ型がどんな環境でも使えるのであれば何故32ビットや8ビットのデータ型が存在するのでしょうか?どなたかご存知の方教えてください。 よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.3

変数の大きさについて C の規格では ・1バイトは 8ビット以上でアドレッシングの最小単位 を基本とし, integral については ・1 = sizeof(char) ≦ sizeof(short) ≦ sizeof(int) ≦ sizeof(long) ≦ sizeof(long long) ・short, long, long long はそれぞれ 16ビット, 32ビット, 64ビット以上 ・signed と unsigned では同じ大きさ float系に対しては ・sizeof(float) ≦ sizeof(double) ≦ sizeof(long double) ・float は 10進 6桁以上, double は 10進 10桁以上の有効数字 ・指数の範囲は少なくとも -37以上 37以下 と規定しています. 多くの場合 float が 32ビット, double が 64ビットなのは IEC 60559 でそのような形式 (それぞれ short format, long format) を定義しているからで, その起源は Intel 8087 にたどりつきます.

その他の回答 (2)

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.2

何でもよいから64ビットの型ということであれば、ほとんどの環境で使うことができます。例えば、 char [8]; 型でも64ビットだったりするからです。 もちろん例外もあります。 char 型が9ビットの環境では、9が64の約数ではないという理由から、64ビットのデータ型が存在しないわけです。 ところで、一部のスーパーコンピュータなどでは、64ビット未満のデータ型が存在しない処理系も実在するようです。

  • xcrOSgS2wY
  • ベストアンサー率50% (1006/1985)
回答No.1

doubleが64ビット幅であることは保証されていません。保証されているのは   floatはdoubleより大きくない   doubleはlong doubleより大きくない ということだけです。 私は話しに聞いたことがあるだけですが、floatとdoubleが同じサイズの処理系もあるそうです。 さて、PCではfloatが32ビット幅、doubleが64ビット幅のことが多いわけですが、その理由は32ビット幅と64ビット幅では(文字通り)格納メモリ量も実効速度も異なるため、用途に合わせて使い分けられるようになっているからです。 charやshort/int/longについても、おおむね同様です。

関連するQ&A