• ベストアンサー

OSによる浮動小数点数の解釈と出力の仕組み

現在主流となっているコンピューターのアーキテクチャにおいては、実数表現のために浮動小数点数という手法を用いていますが、浮動小数点数表現された2進数はただの2進数であり、たとえばWindowsのプログラムが浮動小数点数を10進表記で表示したりする際には、OSのどのあたりの機能が浮動小数点数を解釈して10進数表記にするのでしょうか?

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

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4903/10364)
回答No.2

OSじゃなくてその表示するアプリケーションがやるのが普通です。 もちろんいちいちプログラムを書くわけじゃ無くて、浮動小数点を10進文字列に変換するライブラリのサブルーチンを呼び出します。 Cだと、sprintf(文字列領域,"%e",浮動小数点の値) とか。 さらにその下のレベルでは、ライブラリのサブルーチンプログラムに含まれる、CPUの浮動小数点処理命令の組み合わせですね。

okdummy001
質問者

お礼

ご回答ありがとうございます。

okdummy001
質問者

補足

プログラムで解釈→OSの入出力処理に渡す→出力                  ↑            ここでどのキャラクターを表示            するかがもうすでに決められて            いるという解釈でOKですか?

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • notnot
  • ベストアンサー率47% (4903/10364)
回答No.3

>ここでどのキャラクターを表示するかがもうすでに決められているという解釈でOKですか? そうですよ。 浮動小数点に限らず、バイナリ数値を文字に変換するのは、アプリケーションの役目です。

okdummy001
質問者

お礼

ありがとうございました。

すると、全ての回答が全文表示されます。
noname#194317
noname#194317
回答No.1

Windowsの場合は、カーネルが管理しているようです。今ではCPUに浮動小数点演算機能が入っているのが当たり前になっていますが、昔はコプロセッサと言ってオプション扱いだったので、アプリ側にCPUの違いを意識させないようにするため、カーネルがコプロセッサをエミュレーションしていました。それが今でも名残として残っているのだと思います。 多分今なら、データと答えの受け渡しをOSがするけど、やってることは本当に受け渡しだけで、実際の仕事はCPUに丸投げみたいな形じゃないでしょうか。 これがもっと昔、DOSくらいになると、浮動小数点ドライバを介してコプロセッサにアクセスしたり、アプリケーションが自分でコプロセッサに依頼したり、あるいは完全に自前で処理するものもありました。今でもやろうと思えば、OSに頼らなくてもアプリ自前でできます。もっと高精度が要求される用途だとか、浮動小数点ではなくCOBOLで使われる固定小数点などでは、自前でしている(OSに頼れないから、そうせざるを得ない)はずです。

okdummy001
質問者

お礼

ご回答ありがとうございます。

okdummy001
質問者

補足

浮動小数点数として認識して、出力時に10進表記にする処理はカーネルが担当しているのでしょうか?

すると、全ての回答が全文表示されます。