電子書籍の厳選無料作品が豊富!

こんにちは。かなり初歩的な質問だとは思うのですが
教えてください。よろしくお願い致します。

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

A 回答 (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 にたどりつきます.
    • good
    • 0

何でもよいから64ビットの型ということであれば、ほとんどの環境で使うことができます。

例えば、 char [8]; 型でも64ビットだったりするからです。
もちろん例外もあります。 char 型が9ビットの環境では、9が64の約数ではないという理由から、64ビットのデータ型が存在しないわけです。

ところで、一部のスーパーコンピュータなどでは、64ビット未満のデータ型が存在しない処理系も実在するようです。
    • good
    • 0

doubleが64ビット幅であることは保証されていません。

保証されているのは

  floatはdoubleより大きくない
  doubleはlong doubleより大きくない

ということだけです。

私は話しに聞いたことがあるだけですが、floatとdoubleが同じサイズの処理系もあるそうです。

さて、PCではfloatが32ビット幅、doubleが64ビット幅のことが多いわけですが、その理由は32ビット幅と64ビット幅では(文字通り)格納メモリ量も実効速度も異なるため、用途に合わせて使い分けられるようになっているからです。

charやshort/int/longについても、おおむね同様です。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!